/*
 * 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 config-2014-11-12.normal.json service model.
 */
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.ConfigService.Model;
using Amazon.ConfigService.Model.Internal.MarshallTransformations;
using Amazon.ConfigService.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.ConfigService
{
    /// 
    /// Implementation for accessing ConfigService
    ///
    /// Config 
    /// 
    /// Config provides a way to keep track of the configurations of all the Amazon Web Services
    /// resources associated with your Amazon Web Services account. You can use Config to
    /// get the current and historical configurations of each Amazon Web Services resource
    /// and also to get information about the relationship between the resources. An Amazon
    /// Web Services resource can be an Amazon Compute Cloud (Amazon EC2) instance, an Elastic
    /// Block Store (EBS) volume, an elastic network Interface (ENI), or a security group.
    /// For a complete list of resources currently supported by Config, see Supported
    /// Amazon Web Services resources.
    /// 
    ///  
    /// 
    /// You can access and manage Config through the Amazon Web Services Management Console,
    /// the Amazon Web Services Command Line Interface (Amazon Web Services CLI), the Config
    /// API, or the Amazon Web Services SDKs for Config. This reference guide contains documentation
    /// for the Config API and the Amazon Web Services CLI commands that you can use to manage
    /// Config. The Config API uses the Signature Version 4 protocol for signing requests.
    /// For more information about how to sign a request with this protocol, see Signature
    /// Version 4 Signing Process. For detailed information about Config features and
    /// their associated actions or commands, as well as how to work with Amazon Web Services
    /// Management Console, see What
    /// Is Config in the Config Developer Guide.
    /// 
    /// 
    public partial class AmazonConfigServiceClient : AmazonServiceClient, IAmazonConfigService
    {
        private static IServiceMetadata serviceMetadata = new AmazonConfigServiceMetadata();
        
        #region Constructors
        /// 
        /// Constructs AmazonConfigServiceClient 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 AmazonConfigServiceClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonConfigServiceConfig()) { }
        /// 
        /// Constructs AmazonConfigServiceClient 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 AmazonConfigServiceClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonConfigServiceConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonConfigServiceClient 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 AmazonConfigServiceClient Configuration Object
        public AmazonConfigServiceClient(AmazonConfigServiceConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonConfigServiceClient(AWSCredentials credentials)
            : this(credentials, new AmazonConfigServiceConfig())
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonConfigServiceClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonConfigServiceConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Credentials and an
        /// AmazonConfigServiceClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonConfigServiceClient Configuration Object
        public AmazonConfigServiceClient(AWSCredentials credentials, AmazonConfigServiceConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonConfigServiceConfig())
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonConfigServiceConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonConfigServiceClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonConfigServiceClient Configuration Object
        public AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonConfigServiceConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonConfigServiceConfig())
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient 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 AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonConfigServiceConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonConfigServiceClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonConfigServiceClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonConfigServiceClient Configuration Object
        public AmazonConfigServiceClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonConfigServiceConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
        {
        }
        #endregion
#if AWS_ASYNC_ENUMERABLES_API
        private IConfigServicePaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IConfigServicePaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new ConfigServicePaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Overrides
        /// 
        /// Creates the signer for the service.
        /// 
        protected override AbstractAWSSigner CreateSigner()
        {
            return new AWS4Signer();
        } 
        /// 
        /// Customizes the runtime pipeline.
        /// 
        /// Runtime pipeline for the current client.
        protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
        {
            pipeline.RemoveHandler();
            pipeline.AddHandlerAfter(new AmazonConfigServiceEndpointResolver());
        }
        /// 
        /// 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  BatchGetAggregateResourceConfig
        internal virtual BatchGetAggregateResourceConfigResponse BatchGetAggregateResourceConfig(BatchGetAggregateResourceConfigRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchGetAggregateResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchGetAggregateResourceConfigResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the current configuration items for resources that are present in your Config
        /// aggregator. The operation also returns a list of resources that are not processed
        /// in the current request. If there are no unprocessed resources, the operation returns
        /// an empty unprocessedResourceIdentifiers list. 
        /// 
        ///    -  
        /// 
        /// The API does not return results for deleted resources.
        /// 
        ///  
  -  
        /// 
        ///  The API does not return tags and relationships.
        /// 
        ///  
  
 
        /// 
        /// Container for the necessary parameters to execute the BatchGetAggregateResourceConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the BatchGetAggregateResourceConfig service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for BatchGetAggregateResourceConfig Operation
        public virtual Task BatchGetAggregateResourceConfigAsync(BatchGetAggregateResourceConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchGetAggregateResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchGetAggregateResourceConfigResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  BatchGetResourceConfig
        internal virtual BatchGetResourceConfigResponse BatchGetResourceConfig(BatchGetResourceConfigRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchGetResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchGetResourceConfigResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the BaseConfigurationItem for one or more requested resources.
        /// The operation also returns a list of resources that are not processed in the current
        /// request. If there are no unprocessed resources, the operation returns an empty unprocessedResourceKeys
        /// list. 
        /// 
        ///    -  
        /// 
        /// The API does not return results for deleted resources.
        /// 
        ///  
  -  
        /// 
        ///  The API does not return any tags for the requested resources. This information is
        /// filtered out of the supplementaryConfiguration section of the API response.
        /// 
        ///  
  
 
        /// 
        /// Container for the necessary parameters to execute the BatchGetResourceConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the BatchGetResourceConfig service method, as returned by ConfigService.
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for BatchGetResourceConfig Operation
        public virtual Task BatchGetResourceConfigAsync(BatchGetResourceConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = BatchGetResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = BatchGetResourceConfigResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteAggregationAuthorization
        internal virtual DeleteAggregationAuthorizationResponse DeleteAggregationAuthorization(DeleteAggregationAuthorizationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteAggregationAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteAggregationAuthorizationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the authorization granted to the specified configuration aggregator account
        /// in a specified region.
        /// 
        /// Container for the necessary parameters to execute the DeleteAggregationAuthorization service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteAggregationAuthorization service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DeleteAggregationAuthorization Operation
        public virtual Task DeleteAggregationAuthorizationAsync(DeleteAggregationAuthorizationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteAggregationAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteAggregationAuthorizationResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteConfigRule
        internal virtual DeleteConfigRuleResponse DeleteConfigRule(DeleteConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the specified Config rule and all of its evaluation results.
        /// 
        ///  
        /// 
        /// Config sets the state of a rule to DELETING until the deletion is complete.
        /// You cannot update a rule while it is in this state. If you make a PutConfigRule
        /// or DeleteConfigRule request for the rule, you will receive a ResourceInUseException.
        /// 
        ///  
        /// 
        /// You can check the state of a rule by using the DescribeConfigRules request.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteConfigRule service method, as returned by ConfigService.
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for DeleteConfigRule Operation
        public virtual Task DeleteConfigRuleAsync(DeleteConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteConfigurationAggregator
        internal virtual DeleteConfigurationAggregatorResponse DeleteConfigurationAggregator(DeleteConfigurationAggregatorRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationAggregatorRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationAggregatorResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the specified configuration aggregator and the aggregated data associated
        /// with the aggregator.
        /// 
        /// Container for the necessary parameters to execute the DeleteConfigurationAggregator service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteConfigurationAggregator service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// REST API Reference for DeleteConfigurationAggregator Operation
        public virtual Task DeleteConfigurationAggregatorAsync(DeleteConfigurationAggregatorRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationAggregatorRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationAggregatorResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteConfigurationRecorder
        internal virtual DeleteConfigurationRecorderResponse DeleteConfigurationRecorder(DeleteConfigurationRecorderRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationRecorderRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationRecorderResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the configuration recorder.
        /// 
        ///  
        /// 
        /// After the configuration recorder is deleted, Config will not record resource configuration
        /// changes until you create a new configuration recorder.
        /// 
        ///  
        /// 
        /// This action does not delete the configuration information that was previously recorded.
        /// You will be able to access the previously recorded information by using the GetResourceConfigHistory
        /// action, but you will not be able to access this information in the Config console
        /// until you create a new configuration recorder.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteConfigurationRecorder service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteConfigurationRecorder service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration recorder that does not exist.
        /// 
        /// REST API Reference for DeleteConfigurationRecorder Operation
        public virtual Task DeleteConfigurationRecorderAsync(DeleteConfigurationRecorderRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConfigurationRecorderRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConfigurationRecorderResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteConformancePack
        internal virtual DeleteConformancePackResponse DeleteConformancePack(DeleteConformancePackRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConformancePackResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the specified conformance pack and all the Config rules, remediation actions,
        /// and all evaluation results within that conformance pack.
        /// 
        ///  
        /// 
        /// Config sets the conformance pack to DELETE_IN_PROGRESS until the deletion
        /// is complete. You cannot update a conformance pack while it is in this state.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteConformancePack service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteConformancePack service method, as returned by ConfigService.
        /// 
        /// You specified one or more conformance packs that do not exist.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for DeleteConformancePack Operation
        public virtual Task DeleteConformancePackAsync(DeleteConformancePackRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteConformancePackResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteDeliveryChannel
        internal virtual DeleteDeliveryChannelResponse DeleteDeliveryChannel(DeleteDeliveryChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDeliveryChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDeliveryChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the delivery channel.
        /// 
        ///  
        /// 
        /// Before you can delete the delivery channel, you must stop the configuration recorder
        /// by using the StopConfigurationRecorder action.
        /// 
        /// 
        /// The name of the delivery channel to delete.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteDeliveryChannel service method, as returned by ConfigService.
        /// 
        /// You cannot delete the delivery channel you specified because the configuration recorder
        /// is running.
        /// 
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DeleteDeliveryChannel Operation
        public virtual Task DeleteDeliveryChannelAsync(string deliveryChannelName, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var request = new DeleteDeliveryChannelRequest();
            request.DeliveryChannelName = deliveryChannelName;
            return DeleteDeliveryChannelAsync(request, cancellationToken);
        }
        /// 
        /// Deletes the delivery channel.
        /// 
        ///  
        /// 
        /// Before you can delete the delivery channel, you must stop the configuration recorder
        /// by using the StopConfigurationRecorder action.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteDeliveryChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteDeliveryChannel service method, as returned by ConfigService.
        /// 
        /// You cannot delete the delivery channel you specified because the configuration recorder
        /// is running.
        /// 
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DeleteDeliveryChannel Operation
        public virtual Task DeleteDeliveryChannelAsync(DeleteDeliveryChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteDeliveryChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteDeliveryChannelResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteEvaluationResults
        internal virtual DeleteEvaluationResultsResponse DeleteEvaluationResults(DeleteEvaluationResultsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteEvaluationResultsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteEvaluationResultsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the evaluation results for the specified Config rule. You can specify one
        /// Config rule per request. After you delete the evaluation results, you can call the
        /// StartConfigRulesEvaluation API to start evaluating your Amazon Web Services
        /// resources against the rule.
        /// 
        /// Container for the necessary parameters to execute the DeleteEvaluationResults service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteEvaluationResults service method, as returned by ConfigService.
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for DeleteEvaluationResults Operation
        public virtual Task DeleteEvaluationResultsAsync(DeleteEvaluationResultsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteEvaluationResultsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteEvaluationResultsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteOrganizationConfigRule
        internal virtual DeleteOrganizationConfigRuleResponse DeleteOrganizationConfigRule(DeleteOrganizationConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOrganizationConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOrganizationConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the specified organization Config rule and all of its evaluation results from
        /// all member accounts in that organization. 
        /// 
        ///  
        /// 
        /// Only a management account and a delegated administrator account can delete an organization
        /// Config rule. When calling this API with a delegated administrator, you must ensure
        /// Organizations ListDelegatedAdministrator permissions are added.
        /// 
        ///  
        /// 
        /// Config sets the state of a rule to DELETE_IN_PROGRESS until the deletion is complete.
        /// You cannot update a rule while it is in this state.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOrganizationConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteOrganizationConfigRule service method, as returned by ConfigService.
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an organization
        /// Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce
        /// Names (ARNs) are used before trying again.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for DeleteOrganizationConfigRule Operation
        public virtual Task DeleteOrganizationConfigRuleAsync(DeleteOrganizationConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOrganizationConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOrganizationConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteOrganizationConformancePack
        internal virtual DeleteOrganizationConformancePackResponse DeleteOrganizationConformancePack(DeleteOrganizationConformancePackRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOrganizationConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOrganizationConformancePackResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the specified organization conformance pack and all of the Config rules and
        /// remediation actions from all member accounts in that organization. 
        /// 
        ///  
        /// 
        ///  Only a management account or a delegated administrator account can delete an organization
        /// conformance pack. When calling this API with a delegated administrator, you must ensure
        /// Organizations ListDelegatedAdministrator permissions are added.
        /// 
        ///  
        /// 
        /// Config sets the state of a conformance pack to DELETE_IN_PROGRESS until the deletion
        /// is complete. You cannot update a conformance pack while it is in this state. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteOrganizationConformancePack service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteOrganizationConformancePack service method, as returned by ConfigService.
        /// 
        /// Config organization conformance pack that you passed in the filter does not exist.
        /// 
        ///  
        /// 
        /// For DeleteOrganizationConformancePack, you tried to delete an organization conformance
        /// pack that does not exist.
        /// 
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for DeleteOrganizationConformancePack Operation
        public virtual Task DeleteOrganizationConformancePackAsync(DeleteOrganizationConformancePackRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteOrganizationConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteOrganizationConformancePackResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeletePendingAggregationRequest
        internal virtual DeletePendingAggregationRequestResponse DeletePendingAggregationRequest(DeletePendingAggregationRequestRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePendingAggregationRequestRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePendingAggregationRequestResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes pending authorization requests for a specified aggregator account in a specified
        /// region.
        /// 
        /// Container for the necessary parameters to execute the DeletePendingAggregationRequest service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeletePendingAggregationRequest service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DeletePendingAggregationRequest Operation
        public virtual Task DeletePendingAggregationRequestAsync(DeletePendingAggregationRequestRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeletePendingAggregationRequestRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeletePendingAggregationRequestResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteRemediationConfiguration
        internal virtual DeleteRemediationConfigurationResponse DeleteRemediationConfiguration(DeleteRemediationConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRemediationConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRemediationConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the remediation configuration.
        /// 
        /// Container for the necessary parameters to execute the DeleteRemediationConfiguration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteRemediationConfiguration service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You specified an Config rule without a remediation configuration.
        /// 
        /// 
        /// Remediation action is in progress. You can either cancel execution in Amazon Web Services
        /// Systems Manager or wait and try again later.
        /// 
        /// REST API Reference for DeleteRemediationConfiguration Operation
        public virtual Task DeleteRemediationConfigurationAsync(DeleteRemediationConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRemediationConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRemediationConfigurationResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteRemediationExceptions
        internal virtual DeleteRemediationExceptionsResponse DeleteRemediationExceptions(DeleteRemediationExceptionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRemediationExceptionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes one or more remediation exceptions mentioned in the resource keys.
        /// 
        ///   
        /// 
        /// Config generates a remediation exception when a problem occurs executing a remediation
        /// action to a specific resource. Remediation exceptions blocks auto-remediation until
        /// the exception is cleared.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeleteRemediationExceptions service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteRemediationExceptions service method, as returned by ConfigService.
        /// 
        /// You tried to delete a remediation exception that does not exist.
        /// 
        /// REST API Reference for DeleteRemediationExceptions Operation
        public virtual Task DeleteRemediationExceptionsAsync(DeleteRemediationExceptionsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRemediationExceptionsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteResourceConfig
        internal virtual DeleteResourceConfigResponse DeleteResourceConfig(DeleteResourceConfigRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteResourceConfigResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Records the configuration state for a custom resource that has been deleted. This
        /// API records a new ConfigurationItem with a ResourceDeleted status. You can retrieve
        /// the ConfigurationItems recorded for this resource in your Config History.
        /// 
        /// Container for the necessary parameters to execute the DeleteResourceConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteResourceConfig service method, as returned by ConfigService.
        /// 
        /// There is no configuration recorder running.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for DeleteResourceConfig Operation
        public virtual Task DeleteResourceConfigAsync(DeleteResourceConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteResourceConfigResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteRetentionConfiguration
        internal virtual DeleteRetentionConfigurationResponse DeleteRetentionConfiguration(DeleteRetentionConfigurationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRetentionConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRetentionConfigurationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the retention configuration.
        /// 
        /// Container for the necessary parameters to execute the DeleteRetentionConfiguration service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteRetentionConfiguration service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have specified a retention configuration that does not exist.
        /// 
        /// REST API Reference for DeleteRetentionConfiguration Operation
        public virtual Task DeleteRetentionConfigurationAsync(DeleteRetentionConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRetentionConfigurationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRetentionConfigurationResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteStoredQuery
        internal virtual DeleteStoredQueryResponse DeleteStoredQuery(DeleteStoredQueryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteStoredQueryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteStoredQueryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes the stored query for a single Amazon Web Services account and a single Amazon
        /// Web Services Region.
        /// 
        /// Container for the necessary parameters to execute the DeleteStoredQuery service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteStoredQuery service method, as returned by ConfigService.
        /// 
        /// You have specified a resource that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for DeleteStoredQuery Operation
        public virtual Task DeleteStoredQueryAsync(DeleteStoredQueryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteStoredQueryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteStoredQueryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeliverConfigSnapshot
        internal virtual DeliverConfigSnapshotResponse DeliverConfigSnapshot(DeliverConfigSnapshotRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeliverConfigSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeliverConfigSnapshotResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified
        /// delivery channel. After the delivery has started, Config sends the following notifications
        /// using an Amazon SNS topic that you have specified.
        /// 
        ///   -  
        /// 
        /// Notification of the start of the delivery.
        /// 
        ///  
  -  
        /// 
        /// Notification of the completion of the delivery, if the delivery was successfully completed.
        /// 
        ///  
  -  
        /// 
        /// Notification of delivery failure, if the delivery failed.
        /// 
        ///  
  
        /// 
        /// The name of the delivery channel through which the snapshot is delivered.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeliverConfigSnapshot service method, as returned by ConfigService.
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// There is no configuration recorder running.
        /// 
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DeliverConfigSnapshot Operation
        public virtual Task DeliverConfigSnapshotAsync(string deliveryChannelName, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var request = new DeliverConfigSnapshotRequest();
            request.DeliveryChannelName = deliveryChannelName;
            return DeliverConfigSnapshotAsync(request, cancellationToken);
        }
        /// 
        /// Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified
        /// delivery channel. After the delivery has started, Config sends the following notifications
        /// using an Amazon SNS topic that you have specified.
        /// 
        ///   -  
        /// 
        /// Notification of the start of the delivery.
        /// 
        ///  
  -  
        /// 
        /// Notification of the completion of the delivery, if the delivery was successfully completed.
        /// 
        ///  
  -  
        /// 
        /// Notification of delivery failure, if the delivery failed.
        /// 
        ///  
  
        /// 
        /// Container for the necessary parameters to execute the DeliverConfigSnapshot service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeliverConfigSnapshot service method, as returned by ConfigService.
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// There is no configuration recorder running.
        /// 
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DeliverConfigSnapshot Operation
        public virtual Task DeliverConfigSnapshotAsync(DeliverConfigSnapshotRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeliverConfigSnapshotRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeliverConfigSnapshotResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeAggregateComplianceByConfigRules
        internal virtual DescribeAggregateComplianceByConfigRulesResponse DescribeAggregateComplianceByConfigRules(DescribeAggregateComplianceByConfigRulesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregateComplianceByConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregateComplianceByConfigRulesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of compliant and noncompliant rules with the number of resources for
        /// compliant and noncompliant rules. Does not display rules that do not have compliance
        /// results. 
        /// 
        ///   
        /// 
        /// The results can return an empty result page, but if you have a nextToken,
        /// the results are displayed on the next page.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeAggregateComplianceByConfigRules service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeAggregateComplianceByConfigRules service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for DescribeAggregateComplianceByConfigRules Operation
        public virtual Task DescribeAggregateComplianceByConfigRulesAsync(DescribeAggregateComplianceByConfigRulesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregateComplianceByConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregateComplianceByConfigRulesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeAggregateComplianceByConformancePacks
        internal virtual DescribeAggregateComplianceByConformancePacksResponse DescribeAggregateComplianceByConformancePacks(DescribeAggregateComplianceByConformancePacksRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregateComplianceByConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregateComplianceByConformancePacksResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of the conformance packs and their associated compliance status with
        /// the count of compliant and noncompliant Config rules within each conformance pack.
        /// Also returns the total rule count which includes compliant rules, noncompliant rules,
        /// and rules that cannot be evaluated due to insufficient data.
        /// 
        ///   
        /// 
        /// The results can return an empty result page, but if you have a nextToken,
        /// the results are displayed on the next page.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeAggregateComplianceByConformancePacks service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeAggregateComplianceByConformancePacks service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for DescribeAggregateComplianceByConformancePacks Operation
        public virtual Task DescribeAggregateComplianceByConformancePacksAsync(DescribeAggregateComplianceByConformancePacksRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregateComplianceByConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregateComplianceByConformancePacksResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeAggregationAuthorizations
        internal virtual DescribeAggregationAuthorizationsResponse DescribeAggregationAuthorizations(DescribeAggregationAuthorizationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregationAuthorizationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregationAuthorizationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of authorizations granted to various aggregator accounts and regions.
        /// 
        /// Container for the necessary parameters to execute the DescribeAggregationAuthorizations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeAggregationAuthorizations service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DescribeAggregationAuthorizations Operation
        public virtual Task DescribeAggregationAuthorizationsAsync(DescribeAggregationAuthorizationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeAggregationAuthorizationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeAggregationAuthorizationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeComplianceByConfigRule
        internal virtual DescribeComplianceByConfigRuleResponse DescribeComplianceByConfigRule(DescribeComplianceByConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeComplianceByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeComplianceByConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Indicates whether the specified Config rules are compliant. If a rule is noncompliant,
        /// this action returns the number of Amazon Web Services resources that do not comply
        /// with the rule.
        /// 
        ///  
        /// 
        /// A rule is compliant if all of the evaluated resources comply with it. It is noncompliant
        /// if any of these resources do not comply.
        /// 
        ///  
        /// 
        /// If Config has no current evaluation results for the rule, it returns INSUFFICIENT_DATA.
        /// This result might indicate one of the following conditions:
        /// 
        ///   -  
        /// 
        /// Config has never invoked an evaluation for the rule. To check whether it has, use
        /// the 
DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime
        /// and LastFailedInvocationTime.
        /// 
        ///    -  
        /// 
        /// The rule's Lambda function is failing to send evaluation results to Config. Verify
        /// that the role you assigned to your configuration recorder includes the 
config:PutEvaluations
        /// permission. If the rule is a custom rule, verify that the Lambda execution role includes
        /// the config:PutEvaluations permission.
        /// 
        ///    -  
        /// 
        /// The rule's Lambda function has returned 
NOT_APPLICABLE for all evaluation
        /// results. This can occur if the resources were deleted or removed from the rule's scope.
        /// 
        ///    
        /// 
        /// Container for the necessary parameters to execute the DescribeComplianceByConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeComplianceByConfigRule service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for DescribeComplianceByConfigRule Operation
        public virtual Task DescribeComplianceByConfigRuleAsync(DescribeComplianceByConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeComplianceByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeComplianceByConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeComplianceByResource
        internal virtual DescribeComplianceByResourceResponse DescribeComplianceByResource(DescribeComplianceByResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeComplianceByResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeComplianceByResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Indicates whether the specified Amazon Web Services resources are compliant. If a
        /// resource is noncompliant, this action returns the number of Config rules that the
        /// resource does not comply with.
        /// 
        ///  
        /// 
        /// A resource is compliant if it complies with all the Config rules that evaluate it.
        /// It is noncompliant if it does not comply with one or more of these rules.
        /// 
        ///  
        /// 
        /// If Config has no current evaluation results for the resource, it returns INSUFFICIENT_DATA.
        /// This result might indicate one of the following conditions about the rules that evaluate
        /// the resource:
        /// 
        ///   -  
        /// 
        /// Config has never invoked an evaluation for the rule. To check whether it has, use
        /// the 
DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime
        /// and LastFailedInvocationTime.
        /// 
        ///    -  
        /// 
        /// The rule's Lambda function is failing to send evaluation results to Config. Verify
        /// that the role that you assigned to your configuration recorder includes the 
config:PutEvaluations
        /// permission. If the rule is a custom rule, verify that the Lambda execution role includes
        /// the config:PutEvaluations permission.
        /// 
        ///    -  
        /// 
        /// The rule's Lambda function has returned 
NOT_APPLICABLE for all evaluation
        /// results. This can occur if the resources were deleted or removed from the rule's scope.
        /// 
        ///    
        /// 
        /// Container for the necessary parameters to execute the DescribeComplianceByResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeComplianceByResource service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DescribeComplianceByResource Operation
        public virtual Task DescribeComplianceByResourceAsync(DescribeComplianceByResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeComplianceByResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeComplianceByResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigRuleEvaluationStatus
        internal virtual DescribeConfigRuleEvaluationStatusResponse DescribeConfigRuleEvaluationStatus(DescribeConfigRuleEvaluationStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigRuleEvaluationStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigRuleEvaluationStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns status information for each of your Config managed rules. The status includes
        /// information such as the last time Config invoked the rule, the last time Config failed
        /// to invoke the rule, and the related error for the last failure.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigRuleEvaluationStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigRuleEvaluationStatus service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for DescribeConfigRuleEvaluationStatus Operation
        public virtual Task DescribeConfigRuleEvaluationStatusAsync(DescribeConfigRuleEvaluationStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigRuleEvaluationStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigRuleEvaluationStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigRules
        internal virtual DescribeConfigRulesResponse DescribeConfigRules(DescribeConfigRulesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigRulesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns details about your Config rules.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigRules service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigRules service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for DescribeConfigRules Operation
        public virtual Task DescribeConfigRulesAsync(DescribeConfigRulesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigRulesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigurationAggregators
        internal virtual DescribeConfigurationAggregatorsResponse DescribeConfigurationAggregators(DescribeConfigurationAggregatorsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationAggregatorsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationAggregatorsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details of one or more configuration aggregators. If the configuration
        /// aggregator is not specified, this action returns the details for all the configuration
        /// aggregators associated with the account.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationAggregators service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationAggregators service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationAggregators Operation
        public virtual Task DescribeConfigurationAggregatorsAsync(DescribeConfigurationAggregatorsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationAggregatorsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationAggregatorsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigurationAggregatorSourcesStatus
        internal virtual DescribeConfigurationAggregatorSourcesStatusResponse DescribeConfigurationAggregatorSourcesStatus(DescribeConfigurationAggregatorSourcesStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationAggregatorSourcesStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationAggregatorSourcesStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns status information for sources within an aggregator. The status includes information
        /// about the last time Config verified authorization between the source account and an
        /// aggregator account. In case of a failure, the status contains the related error code
        /// or message.
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationAggregatorSourcesStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationAggregatorSourcesStatus service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationAggregatorSourcesStatus Operation
        public virtual Task DescribeConfigurationAggregatorSourcesStatusAsync(DescribeConfigurationAggregatorSourcesStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationAggregatorSourcesStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationAggregatorSourcesStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigurationRecorders
        internal virtual DescribeConfigurationRecordersResponse DescribeConfigurationRecorders()
        {
            return DescribeConfigurationRecorders(new DescribeConfigurationRecordersRequest());
        }
        internal virtual DescribeConfigurationRecordersResponse DescribeConfigurationRecorders(DescribeConfigurationRecordersRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRecordersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRecordersResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details for the specified configuration recorders. If the configuration
        /// recorder is not specified, this action returns the details for all configuration recorders
        /// associated with the account.
        /// 
        ///   
        /// 
        /// You can specify only one configuration recorder for each Amazon Web Services Region
        /// for each account.
        /// 
        ///  
        /// 
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationRecorders service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration recorder that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationRecorders Operation
        public virtual Task DescribeConfigurationRecordersAsync(System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            return DescribeConfigurationRecordersAsync(new DescribeConfigurationRecordersRequest(), cancellationToken);
        }
        /// 
        /// Returns the details for the specified configuration recorders. If the configuration
        /// recorder is not specified, this action returns the details for all configuration recorders
        /// associated with the account.
        /// 
        ///   
        /// 
        /// You can specify only one configuration recorder for each Amazon Web Services Region
        /// for each account.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationRecorders service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationRecorders service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration recorder that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationRecorders Operation
        public virtual Task DescribeConfigurationRecordersAsync(DescribeConfigurationRecordersRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRecordersRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRecordersResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConfigurationRecorderStatus
        internal virtual DescribeConfigurationRecorderStatusResponse DescribeConfigurationRecorderStatus()
        {
            return DescribeConfigurationRecorderStatus(new DescribeConfigurationRecorderStatusRequest());
        }
        internal virtual DescribeConfigurationRecorderStatusResponse DescribeConfigurationRecorderStatus(DescribeConfigurationRecorderStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRecorderStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRecorderStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the current status of the specified configuration recorder as well as the
        /// status of the last recording event for the recorder. If a configuration recorder is
        /// not specified, this action returns the status of all configuration recorders associated
        /// with the account.
        /// 
        ///   
        /// 
        /// >You can specify only one configuration recorder for each Amazon Web Services Region
        /// for each account. For a detailed status of recording events over time, add your Config
        /// events to Amazon CloudWatch metrics and use CloudWatch metrics.
        /// 
        ///  
        /// 
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationRecorderStatus service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration recorder that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationRecorderStatus Operation
        public virtual Task DescribeConfigurationRecorderStatusAsync(System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            return DescribeConfigurationRecorderStatusAsync(new DescribeConfigurationRecorderStatusRequest(), cancellationToken);
        }
        /// 
        /// Returns the current status of the specified configuration recorder as well as the
        /// status of the last recording event for the recorder. If a configuration recorder is
        /// not specified, this action returns the status of all configuration recorders associated
        /// with the account.
        /// 
        ///   
        /// 
        /// >You can specify only one configuration recorder for each Amazon Web Services Region
        /// for each account. For a detailed status of recording events over time, add your Config
        /// events to Amazon CloudWatch metrics and use CloudWatch metrics.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeConfigurationRecorderStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConfigurationRecorderStatus service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration recorder that does not exist.
        /// 
        /// REST API Reference for DescribeConfigurationRecorderStatus Operation
        public virtual Task DescribeConfigurationRecorderStatusAsync(DescribeConfigurationRecorderStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConfigurationRecorderStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConfigurationRecorderStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConformancePackCompliance
        internal virtual DescribeConformancePackComplianceResponse DescribeConformancePackCompliance(DescribeConformancePackComplianceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePackComplianceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePackComplianceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns compliance details for each rule in that conformance pack.
        /// 
        ///   
        /// 
        /// You must provide exact rule names.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeConformancePackCompliance service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConformancePackCompliance service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// Config rule that you passed in the filter does not exist.
        /// 
        /// 
        /// You specified one or more conformance packs that do not exist.
        /// 
        /// REST API Reference for DescribeConformancePackCompliance Operation
        public virtual Task DescribeConformancePackComplianceAsync(DescribeConformancePackComplianceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePackComplianceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePackComplianceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConformancePacks
        internal virtual DescribeConformancePacksResponse DescribeConformancePacks(DescribeConformancePacksRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePacksResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of one or more conformance packs.
        /// 
        /// Container for the necessary parameters to execute the DescribeConformancePacks service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConformancePacks service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You specified one or more conformance packs that do not exist.
        /// 
        /// REST API Reference for DescribeConformancePacks Operation
        public virtual Task DescribeConformancePacksAsync(DescribeConformancePacksRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePacksResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeConformancePackStatus
        internal virtual DescribeConformancePackStatusResponse DescribeConformancePackStatus(DescribeConformancePackStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePackStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePackStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Provides one or more conformance packs deployment status.
        /// 
        ///   
        /// 
        /// If there are no conformance packs then you will see an empty result.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeConformancePackStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeConformancePackStatus service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DescribeConformancePackStatus Operation
        public virtual Task DescribeConformancePackStatusAsync(DescribeConformancePackStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeConformancePackStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeConformancePackStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeDeliveryChannels
        internal virtual DescribeDeliveryChannelsResponse DescribeDeliveryChannels()
        {
            return DescribeDeliveryChannels(new DescribeDeliveryChannelsRequest());
        }
        internal virtual DescribeDeliveryChannelsResponse DescribeDeliveryChannels(DescribeDeliveryChannelsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDeliveryChannelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDeliveryChannelsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns details about the specified delivery channel. If a delivery channel is not
        /// specified, this action returns the details of all delivery channels associated with
        /// the account.
        /// 
        ///   
        /// 
        /// Currently, you can specify only one delivery channel per region in your account.
        /// 
        ///  
        /// 
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeDeliveryChannels service method, as returned by ConfigService.
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DescribeDeliveryChannels Operation
        public virtual Task DescribeDeliveryChannelsAsync(System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            return DescribeDeliveryChannelsAsync(new DescribeDeliveryChannelsRequest(), cancellationToken);
        }
        /// 
        /// Returns details about the specified delivery channel. If a delivery channel is not
        /// specified, this action returns the details of all delivery channels associated with
        /// the account.
        /// 
        ///   
        /// 
        /// Currently, you can specify only one delivery channel per region in your account.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeDeliveryChannels service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeDeliveryChannels service method, as returned by ConfigService.
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DescribeDeliveryChannels Operation
        public virtual Task DescribeDeliveryChannelsAsync(DescribeDeliveryChannelsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDeliveryChannelsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDeliveryChannelsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeDeliveryChannelStatus
        internal virtual DescribeDeliveryChannelStatusResponse DescribeDeliveryChannelStatus()
        {
            return DescribeDeliveryChannelStatus(new DescribeDeliveryChannelStatusRequest());
        }
        internal virtual DescribeDeliveryChannelStatusResponse DescribeDeliveryChannelStatus(DescribeDeliveryChannelStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDeliveryChannelStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDeliveryChannelStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the current status of the specified delivery channel. If a delivery channel
        /// is not specified, this action returns the current status of all delivery channels
        /// associated with the account.
        /// 
        ///   
        /// 
        /// Currently, you can specify only one delivery channel per region in your account.
        /// 
        ///  
        /// 
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeDeliveryChannelStatus service method, as returned by ConfigService.
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DescribeDeliveryChannelStatus Operation
        public virtual Task DescribeDeliveryChannelStatusAsync(System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            return DescribeDeliveryChannelStatusAsync(new DescribeDeliveryChannelStatusRequest(), cancellationToken);
        }
        /// 
        /// Returns the current status of the specified delivery channel. If a delivery channel
        /// is not specified, this action returns the current status of all delivery channels
        /// associated with the account.
        /// 
        ///   
        /// 
        /// Currently, you can specify only one delivery channel per region in your account.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeDeliveryChannelStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeDeliveryChannelStatus service method, as returned by ConfigService.
        /// 
        /// You have specified a delivery channel that does not exist.
        /// 
        /// REST API Reference for DescribeDeliveryChannelStatus Operation
        public virtual Task DescribeDeliveryChannelStatusAsync(DescribeDeliveryChannelStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeDeliveryChannelStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeDeliveryChannelStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeOrganizationConfigRules
        internal virtual DescribeOrganizationConfigRulesResponse DescribeOrganizationConfigRules(DescribeOrganizationConfigRulesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConfigRulesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of organization Config rules. 
        /// 
        ///   
        /// 
        /// When you specify the limit and the next token, you receive a paginated response.
        /// 
        ///  
        /// 
        /// Limit and next token are not applicable if you specify organization Config rule names.
        /// It is only applicable, when you request all the organization Config rules.
        /// 
        ///  
        /// 
        ///  For accounts within an organzation 
        /// 
        ///  
        /// 
        /// If you deploy an organizational rule or conformance pack in an organization administrator
        /// account, and then establish a delegated administrator and deploy an organizational
        /// rule or conformance pack in the delegated administrator account, you won't be able
        /// to see the organizational rule or conformance pack in the organization administrator
        /// account from the delegated administrator account or see the organizational rule or
        /// conformance pack in the delegated administrator account from organization administrator
        /// account. The DescribeOrganizationConfigRules and DescribeOrganizationConformancePacks
        /// APIs can only see and interact with the organization-related resource that were deployed
        /// from within the account calling those APIs.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeOrganizationConfigRules service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeOrganizationConfigRules service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an organization
        /// Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce
        /// Names (ARNs) are used before trying again.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for DescribeOrganizationConfigRules Operation
        public virtual Task DescribeOrganizationConfigRulesAsync(DescribeOrganizationConfigRulesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConfigRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConfigRulesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeOrganizationConfigRuleStatuses
        internal virtual DescribeOrganizationConfigRuleStatusesResponse DescribeOrganizationConfigRuleStatuses(DescribeOrganizationConfigRuleStatusesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConfigRuleStatusesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConfigRuleStatusesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Provides organization Config rule deployment status for an organization.
        /// 
        ///   
        /// 
        /// The status is not considered successful until organization Config rule is successfully
        /// deployed in all the member accounts with an exception of excluded accounts.
        /// 
        ///  
        /// 
        /// When you specify the limit and the next token, you receive a paginated response. Limit
        /// and next token are not applicable if you specify organization Config rule names. It
        /// is only applicable, when you request all the organization Config rules.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeOrganizationConfigRuleStatuses service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeOrganizationConfigRuleStatuses service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an organization
        /// Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce
        /// Names (ARNs) are used before trying again.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for DescribeOrganizationConfigRuleStatuses Operation
        public virtual Task DescribeOrganizationConfigRuleStatusesAsync(DescribeOrganizationConfigRuleStatusesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConfigRuleStatusesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConfigRuleStatusesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeOrganizationConformancePacks
        internal virtual DescribeOrganizationConformancePacksResponse DescribeOrganizationConformancePacks(DescribeOrganizationConformancePacksRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConformancePacksResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of organization conformance packs. 
        /// 
        ///   
        /// 
        /// When you specify the limit and the next token, you receive a paginated response. 
        /// 
        ///  
        /// 
        /// Limit and next token are not applicable if you specify organization conformance packs
        /// names. They are only applicable, when you request all the organization conformance
        /// packs. 
        /// 
        ///  
        /// 
        ///  For accounts within an organzation 
        /// 
        ///  
        /// 
        /// If you deploy an organizational rule or conformance pack in an organization administrator
        /// account, and then establish a delegated administrator and deploy an organizational
        /// rule or conformance pack in the delegated administrator account, you won't be able
        /// to see the organizational rule or conformance pack in the organization administrator
        /// account from the delegated administrator account or see the organizational rule or
        /// conformance pack in the delegated administrator account from organization administrator
        /// account. The DescribeOrganizationConfigRules and DescribeOrganizationConformancePacks
        /// APIs can only see and interact with the organization-related resource that were deployed
        /// from within the account calling those APIs.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeOrganizationConformancePacks service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeOrganizationConformancePacks service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// Config organization conformance pack that you passed in the filter does not exist.
        /// 
        ///  
        /// 
        /// For DeleteOrganizationConformancePack, you tried to delete an organization conformance
        /// pack that does not exist.
        /// 
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for DescribeOrganizationConformancePacks Operation
        public virtual Task DescribeOrganizationConformancePacksAsync(DescribeOrganizationConformancePacksRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConformancePacksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConformancePacksResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeOrganizationConformancePackStatuses
        internal virtual DescribeOrganizationConformancePackStatusesResponse DescribeOrganizationConformancePackStatuses(DescribeOrganizationConformancePackStatusesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConformancePackStatusesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConformancePackStatusesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Provides organization conformance pack deployment status for an organization. 
        /// 
        ///   
        /// 
        /// The status is not considered successful until organization conformance pack is successfully
        /// deployed in all the member accounts with an exception of excluded accounts.
        /// 
        ///  
        /// 
        /// When you specify the limit and the next token, you receive a paginated response. Limit
        /// and next token are not applicable if you specify organization conformance pack names.
        /// They are only applicable, when you request all the organization conformance packs.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeOrganizationConformancePackStatuses service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeOrganizationConformancePackStatuses service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// Config organization conformance pack that you passed in the filter does not exist.
        /// 
        ///  
        /// 
        /// For DeleteOrganizationConformancePack, you tried to delete an organization conformance
        /// pack that does not exist.
        /// 
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for DescribeOrganizationConformancePackStatuses Operation
        public virtual Task DescribeOrganizationConformancePackStatusesAsync(DescribeOrganizationConformancePackStatusesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeOrganizationConformancePackStatusesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeOrganizationConformancePackStatusesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribePendingAggregationRequests
        internal virtual DescribePendingAggregationRequestsResponse DescribePendingAggregationRequests(DescribePendingAggregationRequestsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePendingAggregationRequestsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePendingAggregationRequestsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of all pending aggregation requests.
        /// 
        /// Container for the necessary parameters to execute the DescribePendingAggregationRequests service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribePendingAggregationRequests service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DescribePendingAggregationRequests Operation
        public virtual Task DescribePendingAggregationRequestsAsync(DescribePendingAggregationRequestsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribePendingAggregationRequestsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribePendingAggregationRequestsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeRemediationConfigurations
        internal virtual DescribeRemediationConfigurationsResponse DescribeRemediationConfigurations(DescribeRemediationConfigurationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationConfigurationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details of one or more remediation configurations.
        /// 
        /// Container for the necessary parameters to execute the DescribeRemediationConfigurations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeRemediationConfigurations service method, as returned by ConfigService.
        /// REST API Reference for DescribeRemediationConfigurations Operation
        public virtual Task DescribeRemediationConfigurationsAsync(DescribeRemediationConfigurationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationConfigurationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeRemediationExceptions
        internal virtual DescribeRemediationExceptionsResponse DescribeRemediationExceptions(DescribeRemediationExceptionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationExceptionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details of one or more remediation exceptions. A detailed view of a remediation
        /// exception for a set of resources that includes an explanation of an exception and
        /// the time when the exception will be deleted. When you specify the limit and the next
        /// token, you receive a paginated response. 
        /// 
        ///   
        /// 
        /// Config generates a remediation exception when a problem occurs executing a remediation
        /// action to a specific resource. Remediation exceptions blocks auto-remediation until
        /// the exception is cleared.
        /// 
        ///  
        /// 
        /// When you specify the limit and the next token, you receive a paginated response. 
        /// 
        ///  
        /// 
        /// Limit and next token are not applicable if you request resources in batch. It is only
        /// applicable, when you request all resources.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeRemediationExceptions service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeRemediationExceptions service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for DescribeRemediationExceptions Operation
        public virtual Task DescribeRemediationExceptionsAsync(DescribeRemediationExceptionsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationExceptionsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeRemediationExecutionStatus
        internal virtual DescribeRemediationExecutionStatusResponse DescribeRemediationExecutionStatus(DescribeRemediationExecutionStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationExecutionStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationExecutionStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Provides a detailed view of a Remediation Execution for a set of resources including
        /// state, timestamps for when steps for the remediation execution occur, and any error
        /// messages for steps that have failed. When you specify the limit and the next token,
        /// you receive a paginated response.
        /// 
        /// Container for the necessary parameters to execute the DescribeRemediationExecutionStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeRemediationExecutionStatus service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You specified an Config rule without a remediation configuration.
        /// 
        /// REST API Reference for DescribeRemediationExecutionStatus Operation
        public virtual Task DescribeRemediationExecutionStatusAsync(DescribeRemediationExecutionStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRemediationExecutionStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRemediationExecutionStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeRetentionConfigurations
        internal virtual DescribeRetentionConfigurationsResponse DescribeRetentionConfigurations(DescribeRetentionConfigurationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRetentionConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRetentionConfigurationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details of one or more retention configurations. If the retention configuration
        /// name is not specified, this action returns the details for all the retention configurations
        /// for that account.
        /// 
        ///   
        /// 
        /// Currently, Config supports only one retention configuration per region in your account.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DescribeRetentionConfigurations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeRetentionConfigurations service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have specified a retention configuration that does not exist.
        /// 
        /// REST API Reference for DescribeRetentionConfigurations Operation
        public virtual Task DescribeRetentionConfigurationsAsync(DescribeRetentionConfigurationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRetentionConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRetentionConfigurationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetAggregateComplianceDetailsByConfigRule
        internal virtual GetAggregateComplianceDetailsByConfigRuleResponse GetAggregateComplianceDetailsByConfigRule(GetAggregateComplianceDetailsByConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateComplianceDetailsByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateComplianceDetailsByConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the evaluation results for the specified Config rule for a specific resource
        /// in a rule. The results indicate which Amazon Web Services resources were evaluated
        /// by the rule, when each resource was last evaluated, and whether each resource complies
        /// with the rule. 
        /// 
        ///   
        /// 
        /// The results can return an empty result page. But if you have a nextToken,
        /// the results are displayed on the next page.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetAggregateComplianceDetailsByConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAggregateComplianceDetailsByConfigRule service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetAggregateComplianceDetailsByConfigRule Operation
        public virtual Task GetAggregateComplianceDetailsByConfigRuleAsync(GetAggregateComplianceDetailsByConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateComplianceDetailsByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateComplianceDetailsByConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetAggregateConfigRuleComplianceSummary
        internal virtual GetAggregateConfigRuleComplianceSummaryResponse GetAggregateConfigRuleComplianceSummary(GetAggregateConfigRuleComplianceSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateConfigRuleComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateConfigRuleComplianceSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the number of compliant and noncompliant rules for one or more accounts and
        /// regions in an aggregator.
        /// 
        ///   
        /// 
        /// The results can return an empty result page, but if you have a nextToken, the results
        /// are displayed on the next page.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetAggregateConfigRuleComplianceSummary service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAggregateConfigRuleComplianceSummary service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetAggregateConfigRuleComplianceSummary Operation
        public virtual Task GetAggregateConfigRuleComplianceSummaryAsync(GetAggregateConfigRuleComplianceSummaryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateConfigRuleComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateConfigRuleComplianceSummaryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetAggregateConformancePackComplianceSummary
        internal virtual GetAggregateConformancePackComplianceSummaryResponse GetAggregateConformancePackComplianceSummary(GetAggregateConformancePackComplianceSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateConformancePackComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateConformancePackComplianceSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the count of compliant and noncompliant conformance packs across all Amazon
        /// Web Services accounts and Amazon Web Services Regions in an aggregator. You can filter
        /// based on Amazon Web Services account ID or Amazon Web Services Region.
        /// 
        ///   
        /// 
        /// The results can return an empty result page, but if you have a nextToken, the results
        /// are displayed on the next page.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetAggregateConformancePackComplianceSummary service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAggregateConformancePackComplianceSummary service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetAggregateConformancePackComplianceSummary Operation
        public virtual Task GetAggregateConformancePackComplianceSummaryAsync(GetAggregateConformancePackComplianceSummaryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateConformancePackComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateConformancePackComplianceSummaryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetAggregateDiscoveredResourceCounts
        internal virtual GetAggregateDiscoveredResourceCountsResponse GetAggregateDiscoveredResourceCounts(GetAggregateDiscoveredResourceCountsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateDiscoveredResourceCountsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateDiscoveredResourceCountsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the resource counts across accounts and regions that are present in your Config
        /// aggregator. You can request the resource counts by providing filters and GroupByKey.
        /// 
        ///  
        /// 
        /// For example, if the input contains accountID 12345678910 and region us-east-1 in filters,
        /// the API returns the count of resources in account ID 12345678910 and region us-east-1.
        /// If the input contains ACCOUNT_ID as a GroupByKey, the API returns resource counts
        /// for all source accounts that are present in your aggregator.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetAggregateDiscoveredResourceCounts service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAggregateDiscoveredResourceCounts service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetAggregateDiscoveredResourceCounts Operation
        public virtual Task GetAggregateDiscoveredResourceCountsAsync(GetAggregateDiscoveredResourceCountsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateDiscoveredResourceCountsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateDiscoveredResourceCountsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetAggregateResourceConfig
        internal virtual GetAggregateResourceConfigResponse GetAggregateResourceConfig(GetAggregateResourceConfigRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateResourceConfigResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns configuration item that is aggregated for your specific resource in a specific
        /// source account and region.
        /// 
        /// Container for the necessary parameters to execute the GetAggregateResourceConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAggregateResourceConfig service method, as returned by ConfigService.
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The configuration item size is outside the allowable range.
        /// 
        /// 
        /// You have specified a resource that is either unknown or has not been discovered.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetAggregateResourceConfig Operation
        public virtual Task GetAggregateResourceConfigAsync(GetAggregateResourceConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetAggregateResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetAggregateResourceConfigResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetComplianceDetailsByConfigRule
        internal virtual GetComplianceDetailsByConfigRuleResponse GetComplianceDetailsByConfigRule(GetComplianceDetailsByConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceDetailsByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceDetailsByConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the evaluation results for the specified Config rule. The results indicate
        /// which Amazon Web Services resources were evaluated by the rule, when each resource
        /// was last evaluated, and whether each resource complies with the rule.
        /// 
        /// Container for the necessary parameters to execute the GetComplianceDetailsByConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetComplianceDetailsByConfigRule service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for GetComplianceDetailsByConfigRule Operation
        public virtual Task GetComplianceDetailsByConfigRuleAsync(GetComplianceDetailsByConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceDetailsByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceDetailsByConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetComplianceDetailsByResource
        internal virtual GetComplianceDetailsByResourceResponse GetComplianceDetailsByResource(GetComplianceDetailsByResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceDetailsByResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceDetailsByResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the evaluation results for the specified Amazon Web Services resource. The
        /// results indicate which Config rules were used to evaluate the resource, when each
        /// rule was last invoked, and whether the resource complies with each rule.
        /// 
        /// Container for the necessary parameters to execute the GetComplianceDetailsByResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetComplianceDetailsByResource service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for GetComplianceDetailsByResource Operation
        public virtual Task GetComplianceDetailsByResourceAsync(GetComplianceDetailsByResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceDetailsByResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceDetailsByResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetComplianceSummaryByConfigRule
        internal virtual GetComplianceSummaryByConfigRuleResponse GetComplianceSummaryByConfigRule(GetComplianceSummaryByConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceSummaryByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceSummaryByConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the number of Config rules that are compliant and noncompliant, up to a maximum
        /// of 25 for each.
        /// 
        /// Container for the necessary parameters to execute the GetComplianceSummaryByConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetComplianceSummaryByConfigRule service method, as returned by ConfigService.
        /// REST API Reference for GetComplianceSummaryByConfigRule Operation
        public virtual Task GetComplianceSummaryByConfigRuleAsync(GetComplianceSummaryByConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceSummaryByConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceSummaryByConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetComplianceSummaryByResourceType
        internal virtual GetComplianceSummaryByResourceTypeResponse GetComplianceSummaryByResourceType(GetComplianceSummaryByResourceTypeRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceSummaryByResourceTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceSummaryByResourceTypeResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the number of resources that are compliant and the number that are noncompliant.
        /// You can specify one or more resource types to get these numbers for each resource
        /// type. The maximum number returned is 100.
        /// 
        /// Container for the necessary parameters to execute the GetComplianceSummaryByResourceType service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetComplianceSummaryByResourceType service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for GetComplianceSummaryByResourceType Operation
        public virtual Task GetComplianceSummaryByResourceTypeAsync(GetComplianceSummaryByResourceTypeRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetComplianceSummaryByResourceTypeRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetComplianceSummaryByResourceTypeResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetConformancePackComplianceDetails
        internal virtual GetConformancePackComplianceDetailsResponse GetConformancePackComplianceDetails(GetConformancePackComplianceDetailsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetConformancePackComplianceDetailsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetConformancePackComplianceDetailsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns compliance details of a conformance pack for all Amazon Web Services resources
        /// that are monitered by conformance pack.
        /// 
        /// Container for the necessary parameters to execute the GetConformancePackComplianceDetails service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetConformancePackComplianceDetails service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// Config rule that you passed in the filter does not exist.
        /// 
        /// 
        /// You specified one or more conformance packs that do not exist.
        /// 
        /// REST API Reference for GetConformancePackComplianceDetails Operation
        public virtual Task GetConformancePackComplianceDetailsAsync(GetConformancePackComplianceDetailsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetConformancePackComplianceDetailsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetConformancePackComplianceDetailsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetConformancePackComplianceSummary
        internal virtual GetConformancePackComplianceSummaryResponse GetConformancePackComplianceSummary(GetConformancePackComplianceSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetConformancePackComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetConformancePackComplianceSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns compliance details for the conformance pack based on the cumulative compliance
        /// results of all the rules in that conformance pack.
        /// 
        /// Container for the necessary parameters to execute the GetConformancePackComplianceSummary service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetConformancePackComplianceSummary service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You specified one or more conformance packs that do not exist.
        /// 
        /// REST API Reference for GetConformancePackComplianceSummary Operation
        public virtual Task GetConformancePackComplianceSummaryAsync(GetConformancePackComplianceSummaryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetConformancePackComplianceSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetConformancePackComplianceSummaryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetCustomRulePolicy
        internal virtual GetCustomRulePolicyResponse GetCustomRulePolicy(GetCustomRulePolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCustomRulePolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCustomRulePolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the policy definition containing the logic for your Config Custom Policy rule.
        /// 
        /// Container for the necessary parameters to execute the GetCustomRulePolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetCustomRulePolicy service method, as returned by ConfigService.
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for GetCustomRulePolicy Operation
        public virtual Task GetCustomRulePolicyAsync(GetCustomRulePolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCustomRulePolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCustomRulePolicyResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetDiscoveredResourceCounts
        internal virtual GetDiscoveredResourceCountsResponse GetDiscoveredResourceCounts(GetDiscoveredResourceCountsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetDiscoveredResourceCountsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetDiscoveredResourceCountsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the resource types, the number of each resource type, and the total number
        /// of resources that Config is recording in this region for your Amazon Web Services
        /// account. 
        /// 
        ///   Example 
        /// 
        ///  
 -  
        /// 
        /// Config is recording three resource types in the US East (Ohio) Region for your account:
        /// 25 EC2 instances, 20 IAM users, and 15 S3 buckets.
        /// 
        ///  
  -  
        /// 
        /// You make a call to the 
GetDiscoveredResourceCounts action and specify
        /// that you want all resource types. 
        /// 
        ///    -  
        /// 
        /// Config returns the following:
        /// 
        ///  
 -  
        /// 
        /// The resource types (EC2 instances, IAM users, and S3 buckets).
        /// 
        ///  
  -  
        /// 
        /// The number of each resource type (25, 20, and 15).
        /// 
        ///  
  -  
        /// 
        /// The total number of all resources (60).
        /// 
        ///  
  
   
 
        /// 
        /// The response is paginated. By default, Config lists 100 ResourceCount objects
        /// on each page. You can customize this number with the limit parameter.
        /// The response includes a nextToken string. To get the next page of results,
        /// run the request again and specify the string for the nextToken parameter.
        /// 
        ///   
        /// 
        /// If you make a call to the GetDiscoveredResourceCounts action, you might not
        /// immediately receive resource counts in the following situations:
        /// 
        ///   -  
        /// 
        /// You are a new Config customer.
        /// 
        ///  
  -  
        /// 
        /// You just enabled resource recording.
        /// 
        ///  
  
 
        /// 
        /// It might take a few minutes for Config to record and count your resources. Wait a
        /// few minutes and then retry the GetDiscoveredResourceCounts action. 
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetDiscoveredResourceCounts service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetDiscoveredResourceCounts service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetDiscoveredResourceCounts Operation
        public virtual Task GetDiscoveredResourceCountsAsync(GetDiscoveredResourceCountsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetDiscoveredResourceCountsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetDiscoveredResourceCountsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetOrganizationConfigRuleDetailedStatus
        internal virtual GetOrganizationConfigRuleDetailedStatusResponse GetOrganizationConfigRuleDetailedStatus(GetOrganizationConfigRuleDetailedStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationConfigRuleDetailedStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationConfigRuleDetailedStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns detailed status for each member account within an organization for a given
        /// organization Config rule.
        /// 
        /// Container for the necessary parameters to execute the GetOrganizationConfigRuleDetailedStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetOrganizationConfigRuleDetailedStatus service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an organization
        /// Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce
        /// Names (ARNs) are used before trying again.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for GetOrganizationConfigRuleDetailedStatus Operation
        public virtual Task GetOrganizationConfigRuleDetailedStatusAsync(GetOrganizationConfigRuleDetailedStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationConfigRuleDetailedStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationConfigRuleDetailedStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetOrganizationConformancePackDetailedStatus
        internal virtual GetOrganizationConformancePackDetailedStatusResponse GetOrganizationConformancePackDetailedStatus(GetOrganizationConformancePackDetailedStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationConformancePackDetailedStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationConformancePackDetailedStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns detailed status for each member account within an organization for a given
        /// organization conformance pack.
        /// 
        /// Container for the necessary parameters to execute the GetOrganizationConformancePackDetailedStatus service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetOrganizationConformancePackDetailedStatus service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// Config organization conformance pack that you passed in the filter does not exist.
        /// 
        ///  
        /// 
        /// For DeleteOrganizationConformancePack, you tried to delete an organization conformance
        /// pack that does not exist.
        /// 
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for GetOrganizationConformancePackDetailedStatus Operation
        public virtual Task GetOrganizationConformancePackDetailedStatusAsync(GetOrganizationConformancePackDetailedStatusRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationConformancePackDetailedStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationConformancePackDetailedStatusResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetOrganizationCustomRulePolicy
        internal virtual GetOrganizationCustomRulePolicyResponse GetOrganizationCustomRulePolicy(GetOrganizationCustomRulePolicyRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationCustomRulePolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationCustomRulePolicyResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the policy definition containing the logic for your organization Config Custom
        /// Policy rule.
        /// 
        /// Container for the necessary parameters to execute the GetOrganizationCustomRulePolicy service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetOrganizationCustomRulePolicy service method, as returned by ConfigService.
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an organization
        /// Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce
        /// Names (ARNs) are used before trying again.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// REST API Reference for GetOrganizationCustomRulePolicy Operation
        public virtual Task GetOrganizationCustomRulePolicyAsync(GetOrganizationCustomRulePolicyRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetOrganizationCustomRulePolicyRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetOrganizationCustomRulePolicyResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetResourceConfigHistory
        internal virtual GetResourceConfigHistoryResponse GetResourceConfigHistory(GetResourceConfigHistoryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceConfigHistoryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceConfigHistoryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of ConfigurationItems for the specified resource. The
        /// list contains details about each state of the resource during the specified time interval.
        /// If you specified a retention period to retain your ConfigurationItems
        /// between a minimum of 30 days and a maximum of 7 years (2557 days), Config returns
        /// the ConfigurationItems for the specified retention period. 
        /// 
        ///  
        /// 
        /// The response is paginated. By default, Config returns a limit of 10 configuration
        /// items per page. You can customize this number with the limit parameter.
        /// The response includes a nextToken string. To get the next page of results,
        /// run the request again and specify the string for the nextToken parameter.
        /// 
        ///   
        /// 
        /// Each call to the API is limited to span a duration of seven days. It is likely that
        /// the number of records returned is smaller than the specified limit. In
        /// such cases, you can make another call, using the nextToken.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetResourceConfigHistory service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetResourceConfigHistory service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The specified time range is not valid. The earlier time is not chronologically before
        /// the later time.
        /// 
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// You have specified a resource that is either unknown or has not been discovered.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetResourceConfigHistory Operation
        public virtual Task GetResourceConfigHistoryAsync(GetResourceConfigHistoryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceConfigHistoryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceConfigHistoryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetResourceEvaluationSummary
        internal virtual GetResourceEvaluationSummaryResponse GetResourceEvaluationSummary(GetResourceEvaluationSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceEvaluationSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceEvaluationSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a summary of resource evaluation for the specified resource evaluation ID
        /// from the proactive rules that were run. The results indicate which evaluation context
        /// was used to evaluate the rules, which resource details were evaluated, the evaluation
        /// mode that was run, and whether the resource details comply with the configuration
        /// of the proactive rules. 
        /// 
        ///   
        /// 
        /// To see additional information about the evaluation result, such as which rule flagged
        /// a resource as NON_COMPLIANT, use the GetComplianceDetailsByResource
        /// API. For more information, see the Examples
        /// section.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the GetResourceEvaluationSummary service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetResourceEvaluationSummary service method, as returned by ConfigService.
        /// 
        /// You have specified a resource that does not exist.
        /// 
        /// REST API Reference for GetResourceEvaluationSummary Operation
        public virtual Task GetResourceEvaluationSummaryAsync(GetResourceEvaluationSummaryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceEvaluationSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceEvaluationSummaryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  GetStoredQuery
        internal virtual GetStoredQueryResponse GetStoredQuery(GetStoredQueryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStoredQueryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStoredQueryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns the details of a specific stored query.
        /// 
        /// Container for the necessary parameters to execute the GetStoredQuery service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetStoredQuery service method, as returned by ConfigService.
        /// 
        /// You have specified a resource that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for GetStoredQuery Operation
        public virtual Task GetStoredQueryAsync(GetStoredQueryRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetStoredQueryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetStoredQueryResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListAggregateDiscoveredResources
        internal virtual ListAggregateDiscoveredResourcesResponse ListAggregateDiscoveredResources(ListAggregateDiscoveredResourcesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListAggregateDiscoveredResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListAggregateDiscoveredResourcesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Accepts a resource type and returns a list of resource identifiers that are aggregated
        /// for a specific resource type across accounts and regions. A resource identifier includes
        /// the resource type, ID, (if available) the custom resource name, source account, and
        /// source region. You can narrow the results to include only resources that have specific
        /// resource IDs, or a resource name, or source account ID, or source region.
        /// 
        ///  
        /// 
        /// For example, if the input consists of accountID 12345678910 and the region is us-east-1
        /// for resource type AWS::EC2::Instance then the API returns all the EC2
        /// instance identifiers of accountID 12345678910 and region us-east-1.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListAggregateDiscoveredResources service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListAggregateDiscoveredResources service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a configuration aggregator that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for ListAggregateDiscoveredResources Operation
        public virtual Task ListAggregateDiscoveredResourcesAsync(ListAggregateDiscoveredResourcesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListAggregateDiscoveredResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListAggregateDiscoveredResourcesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListConformancePackComplianceScores
        internal virtual ListConformancePackComplianceScoresResponse ListConformancePackComplianceScores(ListConformancePackComplianceScoresRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConformancePackComplianceScoresRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConformancePackComplianceScoresResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of conformance pack compliance scores. A compliance score is the percentage
        /// of the number of compliant rule-resource combinations in a conformance pack compared
        /// to the number of total possible rule-resource combinations in the conformance pack.
        /// This metric provides you with a high-level view of the compliance state of your conformance
        /// packs. You can use it to identify, investigate, and understand the level of compliance
        /// in your conformance packs.
        /// 
        ///   
        /// 
        /// Conformance packs with no evaluation results will have a compliance score of INSUFFICIENT_DATA.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the ListConformancePackComplianceScores service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListConformancePackComplianceScores service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for ListConformancePackComplianceScores Operation
        public virtual Task ListConformancePackComplianceScoresAsync(ListConformancePackComplianceScoresRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListConformancePackComplianceScoresRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListConformancePackComplianceScoresResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListDiscoveredResources
        internal virtual ListDiscoveredResourcesResponse ListDiscoveredResources(ListDiscoveredResourcesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListDiscoveredResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListDiscoveredResourcesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Accepts a resource type and returns a list of resource identifiers for the resources
        /// of that type. A resource identifier includes the resource type, ID, and (if available)
        /// the custom resource name. The results consist of resources that Config has discovered,
        /// including those that Config is not currently recording. You can narrow the results
        /// to include only resources that have specific resource IDs or a resource name.
        /// 
        ///   
        /// 
        /// You can specify either resource IDs or a resource name, but not both, in the same
        /// request.
        /// 
        ///   
        /// 
        /// The response is paginated. By default, Config lists 100 resource identifiers on each
        /// page. You can customize this number with the limit parameter. The response
        /// includes a nextToken string. To get the next page of results, run the
        /// request again and specify the string for the nextToken parameter.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListDiscoveredResources service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListDiscoveredResources service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for ListDiscoveredResources Operation
        public virtual Task ListDiscoveredResourcesAsync(ListDiscoveredResourcesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListDiscoveredResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListDiscoveredResourcesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListResourceEvaluations
        internal virtual ListResourceEvaluationsResponse ListResourceEvaluations(ListResourceEvaluationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListResourceEvaluationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListResourceEvaluationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Returns a list of proactive resource evaluations.
        /// 
        /// Container for the necessary parameters to execute the ListResourceEvaluations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListResourceEvaluations service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The specified time range is not valid. The earlier time is not chronologically before
        /// the later time.
        /// 
        /// REST API Reference for ListResourceEvaluations Operation
        public virtual Task ListResourceEvaluationsAsync(ListResourceEvaluationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListResourceEvaluationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListResourceEvaluationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListStoredQueries
        internal virtual ListStoredQueriesResponse ListStoredQueries(ListStoredQueriesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStoredQueriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStoredQueriesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists the stored queries for a single Amazon Web Services account and a single Amazon
        /// Web Services Region. The default is 100.
        /// 
        /// Container for the necessary parameters to execute the ListStoredQueries service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListStoredQueries service method, as returned by ConfigService.
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for ListStoredQueries Operation
        public virtual Task ListStoredQueriesAsync(ListStoredQueriesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListStoredQueriesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListStoredQueriesResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListTagsForResource
        internal virtual ListTagsForResourceResponse ListTagsForResource(ListTagsForResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// List the tags for Config resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListTagsForResource service method, as returned by ConfigService.
        /// 
        /// The specified limit is outside the allowable range.
        /// 
        /// 
        /// The specified next token is not valid. Specify the nextToken string that
        /// was returned in the previous response to get the next page of results.
        /// 
        /// 
        /// You have specified a resource that does not exist.
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for ListTagsForResource Operation
        public virtual Task ListTagsForResourceAsync(ListTagsForResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutAggregationAuthorization
        internal virtual PutAggregationAuthorizationResponse PutAggregationAuthorization(PutAggregationAuthorizationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutAggregationAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutAggregationAuthorizationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Authorizes the aggregator account and region to collect data from the source account
        /// and region. 
        /// 
        ///   
        /// 
        ///  PutAggregationAuthorization is an idempotent API. Subsequent requests
        /// won’t create a duplicate resource if one was already created. If a following request
        /// has different tags values, Config will ignore these differences and treat
        /// it as an idempotent request of the previous. In this case, tags will
        /// not be updated, even if they are different.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutAggregationAuthorization service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutAggregationAuthorization service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for PutAggregationAuthorization Operation
        public virtual Task PutAggregationAuthorizationAsync(PutAggregationAuthorizationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutAggregationAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutAggregationAuthorizationResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutConfigRule
        internal virtual PutConfigRuleResponse PutConfigRule(PutConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Adds or updates an Config rule to evaluate if your Amazon Web Services resources comply
        /// with your desired configurations. For information on how many Config rules you can
        /// have per account, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        ///  
        /// 
        /// There are two types of rules: Config Managed Rules and Config Custom Rules.
        /// You can use PutConfigRule to create both Config Managed Rules and Config
        /// Custom Rules.
        /// 
        ///  
        /// 
        /// Config Managed Rules are predefined, customizable rules created by Config. For a list
        /// of managed rules, see List
        /// of Config Managed Rules. If you are adding an Config managed rule, you must specify
        /// the rule's identifier for the SourceIdentifier key.
        /// 
        ///  
        /// 
        /// Config Custom Rules are rules that you create from scratch. There are two ways to
        /// create Config custom rules: with Lambda functions (
        /// Lambda Developer Guide) and with Guard (Guard
        /// GitHub Repository), a policy-as-code language. Config custom rules created with
        /// Lambda are called Config Custom Lambda Rules and Config custom rules created
        /// with Guard are called Config Custom Policy Rules.
        /// 
        ///  
        /// 
        /// If you are adding a new Config Custom Lambda rule, you first need to create an Lambda
        /// function that the rule invokes to evaluate your resources. When you use PutConfigRule
        /// to add a Custom Lambda rule to Config, you must specify the Amazon Resource Name (ARN)
        /// that Lambda assigns to the function. You specify the ARN in the SourceIdentifier
        /// key. This key is part of the Source object, which is part of the ConfigRule
        /// object. 
        /// 
        ///  
        /// 
        /// For any new Config rule that you add, specify the ConfigRuleName in the
        /// ConfigRule object. Do not specify the ConfigRuleArn or the
        /// ConfigRuleId. These values are generated by Config for new rules.
        /// 
        ///  
        /// 
        /// If you are updating a rule that you added previously, you can specify the rule by
        /// ConfigRuleName, ConfigRuleId, or ConfigRuleArn
        /// in the ConfigRule data type that you use in this request.
        /// 
        ///  
        /// 
        /// For more information about developing and using Config rules, see Evaluating
        /// Resources with Config Rules in the Config Developer Guide.
        /// 
        ///   
        /// 
        ///  PutConfigRule is an idempotent API. Subsequent requests won’t create
        /// a duplicate resource if one was already created. If a following request has different
        /// tags values, Config will ignore these differences and treat it as an
        /// idempotent request of the previous. In this case, tags will not be updated,
        /// even if they are different.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutConfigRule service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// Failed to add the Config rule because the account already contains the maximum number
        /// of 150 rules. Consider deleting any deactivated rules before you add new rules.
        /// 
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for PutConfigRule Operation
        public virtual Task PutConfigRuleAsync(PutConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutConfigurationAggregator
        internal virtual PutConfigurationAggregatorResponse PutConfigurationAggregator(PutConfigurationAggregatorRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigurationAggregatorRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigurationAggregatorResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates and updates the configuration aggregator with the selected source accounts
        /// and regions. The source account can be individual account(s) or an organization.
        /// 
        ///  
        /// 
        ///  accountIds that are passed will be replaced with existing accounts.
        /// If you want to add additional accounts into the aggregator, call DescribeConfigurationAggregators
        /// to get the previous accounts and then append new ones.
        /// 
        ///   
        /// 
        /// Config should be enabled in source accounts and regions you want to aggregate.
        /// 
        ///  
        /// 
        /// If your source type is an organization, you must be signed in to the management account
        /// or a registered delegated administrator and all the features must be enabled in your
        /// organization. If the caller is a management account, Config calls EnableAwsServiceAccess
        /// API to enable integration between Config and Organizations. If the caller is a registered
        /// delegated administrator, Config calls ListDelegatedAdministrators API
        /// to verify whether the caller is a valid delegated administrator.
        /// 
        ///  
        /// 
        /// To register a delegated administrator, see Register
        /// a Delegated Administrator in the Config developer guide. 
        /// 
        ///    
        /// 
        ///  PutConfigurationAggregator is an idempotent API. Subsequent requests
        /// won’t create a duplicate resource if one was already created. If a following request
        /// has different tags values, Config will ignore these differences and treat
        /// it as an idempotent request of the previous. In this case, tags will
        /// not be updated, even if they are different.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutConfigurationAggregator service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutConfigurationAggregator service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have provided a null or empty Amazon Resource Name (ARN) for the IAM role assumed
        /// by Config and used by the configuration recorder.
        /// 
        /// 
        /// For StartConfigRulesEvaluation API, this exception is thrown if an evaluation
        /// is in progress or if you call the StartConfigRulesEvaluation API more than
        /// once per minute.
        /// 
        ///  
        /// 
        /// For PutConfigurationAggregator API, this exception is thrown if the number
        /// of accounts and aggregators exceeds the limit.
        /// 
        /// 
        /// 
        /// Organization is no longer available.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// 
        /// Config resource cannot be created because your organization does not have all features
        /// enabled.
        /// 
        /// REST API Reference for PutConfigurationAggregator Operation
        public virtual Task PutConfigurationAggregatorAsync(PutConfigurationAggregatorRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigurationAggregatorRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigurationAggregatorResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutConfigurationRecorder
        internal virtual PutConfigurationRecorderResponse PutConfigurationRecorder(PutConfigurationRecorderRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigurationRecorderRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigurationRecorderResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a new configuration recorder to record configuration changes for specified
        /// resource types.
        /// 
        ///  
        /// 
        /// You can also use this action to change the roleARN or the recordingGroup
        /// of an existing recorder. For more information, see 
        /// Managing the Configuration Recorder  in the Config Developer Guide.
        /// 
        ///   
        /// 
        /// You can specify only one configuration recorder for each Amazon Web Services Region
        /// for each account.
        /// 
        ///  
        /// 
        /// If the configuration recorder does not have the recordingGroup field
        /// specified, the default is to record all supported resource types.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutConfigurationRecorder service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutConfigurationRecorder service method, as returned by ConfigService.
        /// 
        /// You have provided a name for the configuration recorder that is not valid.
        /// 
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// You have provided a combination of parameter values that is not valid. For example:
        /// 
        ///  
 -  
        /// 
        /// Setting the 
allSupported field of RecordingGroup
        /// to true, but providing a non-empty list for the resourceTypesfield
        /// of RecordingGroup.
        /// 
        ///    -  
        /// 
        /// Setting the 
allSupported field of RecordingGroup
        /// to true, but also setting the useOnly field of RecordingStrategy
        /// to EXCLUSION_BY_RESOURCE_TYPES.
        /// 
        ///    
   -  
        /// 
        /// Every parameter is either null, false, or empty.
        /// 
        ///  
  -  
        /// 
        /// You have reached the limit of the number of resource types you can provide for the
        /// recording group.
        /// 
        ///  
  -  
        /// 
        /// You have provided resource types or a recording strategy that are not valid.
        /// 
        ///  
  
        /// 
        /// 
        /// You have provided a null or empty Amazon Resource Name (ARN) for the IAM role assumed
        /// by Config and used by the configuration recorder.
        /// 
        /// 
        /// You have reached the limit of the number of configuration recorders you can create.
        /// 
        /// REST API Reference for PutConfigurationRecorder Operation
        public virtual Task PutConfigurationRecorderAsync(PutConfigurationRecorderRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConfigurationRecorderRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConfigurationRecorderResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutConformancePack
        internal virtual PutConformancePackResponse PutConformancePack(PutConformancePackRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConformancePackResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates or updates a conformance pack. A conformance pack is a collection of Config
        /// rules that can be easily deployed in an account and a region and across an organization.
        /// For information on how many conformance packs you can have per account, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        ///  
        /// 
        /// This API creates a service-linked role AWSServiceRoleForConfigConforms
        /// in your account. The service-linked role is created only when the role does not exist
        /// in your account. 
        /// 
        ///   
        /// 
        /// You must specify only one of the follow parameters: TemplateS3Uri, TemplateBody
        /// or TemplateSSMDocumentDetails.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutConformancePack service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutConformancePack service method, as returned by ConfigService.
        /// 
        /// You have specified a template that is not valid or supported.
        /// 
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have reached the limit of the number of conformance packs you can create in an
        /// account. For more information, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// REST API Reference for PutConformancePack Operation
        public virtual Task PutConformancePackAsync(PutConformancePackRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutConformancePackResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutDeliveryChannel
        internal virtual PutDeliveryChannelResponse PutDeliveryChannel(PutDeliveryChannelRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutDeliveryChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutDeliveryChannelResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a delivery channel object to deliver configuration information to an Amazon
        /// S3 bucket and Amazon SNS topic.
        /// 
        ///  
        /// 
        /// Before you can create a delivery channel, you must create a configuration recorder.
        /// 
        ///  
        /// 
        /// You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the
        /// existing delivery channel. To change the Amazon S3 bucket or an Amazon SNS topic,
        /// call this action and specify the changed values for the S3 bucket and the SNS topic.
        /// If you specify a different value for either the S3 bucket or the SNS topic, this action
        /// will keep the existing value for the parameter that is not changed.
        /// 
        ///   
        /// 
        /// You can have only one delivery channel per region in your account.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutDeliveryChannel service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutDeliveryChannel service method, as returned by ConfigService.
        /// 
        /// Your Amazon S3 bucket policy does not permit Config to write to it.
        /// 
        /// 
        /// The specified delivery channel name is not valid.
        /// 
        /// 
        /// The specified Amazon S3 key prefix is not valid.
        /// 
        /// 
        /// The specified Amazon KMS Key ARN is not valid.
        /// 
        /// 
        /// The specified Amazon SNS topic does not exist.
        /// 
        /// 
        /// You have reached the limit of the number of delivery channels you can create.
        /// 
        /// 
        /// There are no configuration recorders available to provide the role needed to describe
        /// your resources. Create a configuration recorder.
        /// 
        /// 
        /// The specified Amazon S3 bucket does not exist.
        /// 
        /// REST API Reference for PutDeliveryChannel Operation
        public virtual Task PutDeliveryChannelAsync(PutDeliveryChannelRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutDeliveryChannelRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutDeliveryChannelResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutEvaluations
        internal virtual PutEvaluationsResponse PutEvaluations(PutEvaluationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutEvaluationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutEvaluationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Used by an Lambda function to deliver evaluation results to Config. This action is
        /// required in every Lambda function that is invoked by an Config rule.
        /// 
        /// Container for the necessary parameters to execute the PutEvaluations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutEvaluations service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The specified ResultToken is not valid.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for PutEvaluations Operation
        public virtual Task PutEvaluationsAsync(PutEvaluationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutEvaluationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutEvaluationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutExternalEvaluation
        internal virtual PutExternalEvaluationResponse PutExternalEvaluation(PutExternalEvaluationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutExternalEvaluationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutExternalEvaluationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Add or updates the evaluations for process checks. This API checks if the rule is
        /// a process check when the name of the Config rule is provided.
        /// 
        /// Container for the necessary parameters to execute the PutExternalEvaluation service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutExternalEvaluation service method, as returned by ConfigService.
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// The Config rule in the request is not valid. Verify that the rule is an Config Process
        /// Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs)
        /// are used before trying again.
        /// 
        /// REST API Reference for PutExternalEvaluation Operation
        public virtual Task PutExternalEvaluationAsync(PutExternalEvaluationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutExternalEvaluationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutExternalEvaluationResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutOrganizationConfigRule
        internal virtual PutOrganizationConfigRuleResponse PutOrganizationConfigRule(PutOrganizationConfigRuleRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOrganizationConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOrganizationConfigRuleResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Adds or updates an Config rule for your entire organization to evaluate if your Amazon
        /// Web Services resources comply with your desired configurations. For information on
        /// how many organization Config rules you can have per account, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        ///  
        /// 
        ///  Only a management account and a delegated administrator can create or update an organization
        /// Config rule. When calling this API with a delegated administrator, you must ensure
        /// Organizations ListDelegatedAdministrator permissions are added. An organization
        /// can have up to 3 delegated administrators.
        /// 
        ///  
        /// 
        /// This API enables organization service access through the EnableAWSServiceAccess
        /// action and creates a service-linked role AWSServiceRoleForConfigMultiAccountSetup
        /// in the management or delegated administrator account of your organization. The service-linked
        /// role is created only when the role does not exist in the caller account. Config verifies
        /// the existence of role with GetRole action.
        /// 
        ///  
        /// 
        /// To use this API with delegated administrator, register a delegated administrator by
        /// calling Amazon Web Services Organization register-delegated-administrator
        /// for config-multiaccountsetup.amazonaws.com. 
        /// 
        ///  
        /// 
        /// There are two types of rules: Config Managed Rules and Config Custom Rules.
        /// You can use PutOrganizationConfigRule to create both Config Managed Rules
        /// and Config Custom Rules.
        /// 
        ///  
        /// 
        /// Config Managed Rules are predefined, customizable rules created by Config. For a list
        /// of managed rules, see List
        /// of Config Managed Rules. If you are adding an Config managed rule, you must specify
        /// the rule's identifier for the RuleIdentifier key.
        /// 
        ///  
        /// 
        /// Config Custom Rules are rules that you create from scratch. There are two ways to
        /// create Config custom rules: with Lambda functions (
        /// Lambda Developer Guide) and with Guard (Guard
        /// GitHub Repository), a policy-as-code language. Config custom rules created with
        /// Lambda are called Config Custom Lambda Rules and Config custom rules created
        /// with Guard are called Config Custom Policy Rules.
        /// 
        ///  
        /// 
        /// If you are adding a new Config Custom Lambda rule, you first need to create an Lambda
        /// function in the management account or a delegated administrator that the rule invokes
        /// to evaluate your resources. You also need to create an IAM role in the managed account
        /// that can be assumed by the Lambda function. When you use PutOrganizationConfigRule
        /// to add a Custom Lambda rule to Config, you must specify the Amazon Resource Name (ARN)
        /// that Lambda assigns to the function.
        /// 
        ///   
        /// 
        /// Prerequisite: Ensure you call EnableAllFeatures API to enable all features
        /// in an organization.
        /// 
        ///  
        /// 
        /// Make sure to specify one of either OrganizationCustomPolicyRuleMetadata
        /// for Custom Policy rules, OrganizationCustomRuleMetadata for Custom Lambda
        /// rules, or OrganizationManagedRuleMetadata for managed rules.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutOrganizationConfigRule service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutOrganizationConfigRule service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// 
        /// You have reached the limit of the number of organization Config rules you can create.
        /// For more information, see see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        /// 
        /// Organization is no longer available.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// 
        /// Config resource cannot be created because your organization does not have all features
        /// enabled.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for PutOrganizationConfigRule Operation
        public virtual Task PutOrganizationConfigRuleAsync(PutOrganizationConfigRuleRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOrganizationConfigRuleRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOrganizationConfigRuleResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutOrganizationConformancePack
        internal virtual PutOrganizationConformancePackResponse PutOrganizationConformancePack(PutOrganizationConformancePackRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOrganizationConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOrganizationConformancePackResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deploys conformance packs across member accounts in an Amazon Web Services Organization.
        /// For information on how many organization conformance packs and how many Config rules
        /// you can have per account, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        ///  
        /// 
        /// Only a management account and a delegated administrator can call this API. When calling
        /// this API with a delegated administrator, you must ensure Organizations ListDelegatedAdministrator
        /// permissions are added. An organization can have up to 3 delegated administrators.
        /// 
        ///  
        /// 
        /// This API enables organization service access for config-multiaccountsetup.amazonaws.com
        /// through the EnableAWSServiceAccess action and creates a service-linked
        /// role AWSServiceRoleForConfigMultiAccountSetup in the management or delegated
        /// administrator account of your organization. The service-linked role is created only
        /// when the role does not exist in the caller account. To use this API with delegated
        /// administrator, register a delegated administrator by calling Amazon Web Services Organization
        /// register-delegate-admin for config-multiaccountsetup.amazonaws.com.
        /// 
        ///   
        /// 
        /// Prerequisite: Ensure you call EnableAllFeatures API to enable all features
        /// in an organization.
        /// 
        ///  
        /// 
        /// You must specify either the TemplateS3Uri or the TemplateBody
        /// parameter, but not both. If you provide both Config uses the TemplateS3Uri
        /// parameter and ignores the TemplateBody parameter.
        /// 
        ///  
        /// 
        /// Config sets the state of a conformance pack to CREATE_IN_PROGRESS and UPDATE_IN_PROGRESS
        /// until the conformance pack is created or updated. You cannot update a conformance
        /// pack while it is in this state.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutOrganizationConformancePack service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutOrganizationConformancePack service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// You have reached the limit of the number of organization conformance packs you can
        /// create in an account. For more information, see 
        /// Service Limits  in the Config Developer Guide.
        /// 
        /// 
        /// Organization is no longer available.
        /// 
        /// 
        /// For PutConfigurationAggregator API, you can see this exception for the
        /// following reasons:
        /// 
        ///   -  
        /// 
        /// No permission to call 
EnableAWSServiceAccess API
        /// 
        ///    -  
        /// 
        /// The configuration aggregator cannot be updated because your Amazon Web Services Organization
        /// management account or the delegated administrator role changed. Delete this aggregator
        /// and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// The configuration aggregator is associated with a previous Amazon Web Services Organization
        /// and Config cannot aggregate data with current Amazon Web Services Organization. Delete
        /// this aggregator and create a new one with the current Amazon Web Services Organization.
        /// 
        ///  
  -  
        /// 
        /// You are not a registered delegated administrator for Config with permissions to call
        /// 
ListDelegatedAdministrators API. Ensure that the management account registers
        /// delagated administrator for Config service principle name before the delegated administrator
        /// creates an aggregator.
        /// 
        ///    
 
        /// 
        /// For all OrganizationConfigRule and OrganizationConformancePack
        /// APIs, Config throws an exception if APIs are called from member accounts. All APIs
        /// must be called from organization management account.
        /// 
        /// 
        /// 
        /// Config resource cannot be created because your organization does not have all features
        /// enabled.
        /// 
        /// 
        /// You have specified a template that is not valid or supported.
        /// 
        /// 
        /// You see this exception in the following cases: 
        /// 
        ///   -  
        /// 
        /// For DeleteConfigRule, Config is deleting this rule. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, the rule is deleting your evaluation results. Try your request
        /// again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConfigRule, a remediation action is associated with the rule and Config
        /// cannot delete this rule. Delete the remediation action associated with the rule before
        /// deleting the rule and try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try
        /// your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteOrganizationConfigRule, organization Config rule creation is in progress.
        /// Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation,
        /// update, and deletion is in progress. Try your request again later.
        /// 
        ///  
  -  
        /// 
        /// For DeleteConformancePack, a conformance pack creation, update, and deletion is in
        /// progress. Try your request again later.
        /// 
        ///  
  
        /// 
        /// 
        /// The requested action is not valid.
        /// 
        ///  
        /// 
        /// For PutStoredQuery, you will see this exception if there are missing required fields
        /// or if the input value fails the validation, or if you are trying to create more than
        /// 300 queries.
        /// 
        ///  
        /// 
        /// For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception
        /// if there are missing required fields or if the input value fails the validation.
        /// 
        /// 
        /// REST API Reference for PutOrganizationConformancePack Operation
        public virtual Task PutOrganizationConformancePackAsync(PutOrganizationConformancePackRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutOrganizationConformancePackRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutOrganizationConformancePackResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutRemediationConfigurations
        internal virtual PutRemediationConfigurationsResponse PutRemediationConfigurations(PutRemediationConfigurationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutRemediationConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutRemediationConfigurationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Adds or updates the remediation configuration with a specific Config rule with the
        /// selected target or action. The API creates the RemediationConfiguration
        /// object for the Config rule. The Config rule must already exist for you to add a remediation
        /// configuration. The target (SSM document) must exist and have permissions to use the
        /// target. 
        /// 
        ///   
        /// 
        /// If you make backward incompatible changes to the SSM document, you must call this
        /// again to ensure the remediations can run.
        /// 
        ///  
        /// 
        /// This API does not support adding remediation configurations for service-linked Config
        /// Rules such as Organization Config rules, the rules deployed by conformance packs,
        /// and rules deployed by Amazon Web Services Security Hub.
        /// 
        ///    
        /// 
        /// For manual remediation configuration, you need to provide a value for automationAssumeRole
        /// or use a value in the assumeRolefield to remediate your resources. The
        /// SSM automation document can use either as long as it maps to a valid parameter.
        /// 
        ///  
        /// 
        /// However, for automatic remediation configuration, the only valid assumeRole
        /// field value is AutomationAssumeRole and you need to provide a value for
        /// AutomationAssumeRole to remediate your resources.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutRemediationConfigurations service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutRemediationConfigurations service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for PutRemediationConfigurations Operation
        public virtual Task PutRemediationConfigurationsAsync(PutRemediationConfigurationsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutRemediationConfigurationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutRemediationConfigurationsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutRemediationExceptions
        internal virtual PutRemediationExceptionsResponse PutRemediationExceptions(PutRemediationExceptionsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutRemediationExceptionsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// A remediation exception is when a specified resource is no longer considered for auto-remediation.
        /// This API adds a new exception or updates an existing exception for a specified resource
        /// with a specified Config rule. 
        /// 
        ///   
        /// 
        /// Config generates a remediation exception when a problem occurs running a remediation
        /// action for a specified resource. Remediation exceptions blocks auto-remediation until
        /// the exception is cleared.
        /// 
        ///    
        /// 
        /// When placing an exception on an Amazon Web Services resource, it is recommended that
        /// remediation is set as manual remediation until the given Config rule for the specified
        /// resource evaluates the resource as NON_COMPLIANT. Once the resource has
        /// been evaluated as NON_COMPLIANT, you can add remediation exceptions and
        /// change the remediation type back from Manual to Auto if you want to use auto-remediation.
        /// Otherwise, using auto-remediation before a NON_COMPLIANT evaluation result
        /// can delete resources before the exception is applied.
        /// 
        ///    
        /// 
        /// Placing an exception can only be performed on resources that are NON_COMPLIANT.
        /// If you use this API for COMPLIANT resources or resources that are NOT_APPLICABLE,
        /// a remediation exception will not be generated. For more information on the conditions
        /// that initiate the possible Config evaluation results, see Concepts
        /// | Config Rules in the Config Developer Guide.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutRemediationExceptions service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutRemediationExceptions service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///  
 -  
        /// 
        /// You do not have permission to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        /// 
        ///  
  
   
        /// 
        /// 
        /// One or more of the specified parameters are not valid. Verify that your parameters
        /// are valid and try again.
        /// 
        /// REST API Reference for PutRemediationExceptions Operation
        public virtual Task PutRemediationExceptionsAsync(PutRemediationExceptionsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutRemediationExceptionsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutRemediationExceptionsResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  PutResourceConfig
        internal virtual PutResourceConfigResponse PutResourceConfig(PutResourceConfigRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = PutResourceConfigRequestMarshaller.Instance;
            options.ResponseUnmarshaller = PutResourceConfigResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Records the configuration state for the resource provided in the request. The configuration
        /// state of a resource is represented in Config as Configuration Items. Once this API
        /// records the configuration item, you can retrieve the list of configuration items for
        /// the custom resource type using existing Config APIs. 
        /// 
        ///   
        /// 
        /// The custom resource type must be registered with CloudFormation. This API accepts
        /// the configuration item registered with CloudFormation.
        /// 
        ///  
        /// 
        /// When you call this API, Config only stores configuration state of the resource provided
        /// in the request. This API does not change or remediate the configuration of the resource.
        /// 
        /// 
        ///  
        /// 
        /// Write-only schema properites are not recorded as part of the published configuration
        /// item.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the PutResourceConfig service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the PutResourceConfig service method, as returned by ConfigService.
        /// 
        /// Indicates one of the following errors:
        /// 
        ///   -  
        /// 
        /// For PutConfigRule, the rule cannot be created because the IAM role assigned to Config
        /// lacks permissions to perform the config:Put* action.
        /// 
        ///  
  -  
        /// 
        /// For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN,
        /// and check the function's permissions.
        /// 
        ///  
  -  
        /// 
        /// For PutOrganizationConfigRule, organization Config rule cannot be created because
        /// you do not have permissions to call IAM 
GetRole action or create a service-linked
        /// role.
        /// 
        ///    -  
        /// 
        /// For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot
        /// be created because you do not have the following permissions: 
        /// 
        ///