//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2021 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if compiler(>=5.5) && canImport(_Concurrency)

import SotoCore

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension ConfigService {
    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeAggregateComplianceByConfigRulesPaginator(
        _ input: DescribeAggregateComplianceByConfigRulesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeAggregateComplianceByConfigRulesRequest, DescribeAggregateComplianceByConfigRulesResponse> {
        return .init(
            input: input,
            command: describeAggregateComplianceByConfigRules,
            inputKey: \DescribeAggregateComplianceByConfigRulesRequest.nextToken,
            outputKey: \DescribeAggregateComplianceByConfigRulesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeAggregateComplianceByConformancePacksPaginator(
        _ input: DescribeAggregateComplianceByConformancePacksRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeAggregateComplianceByConformancePacksRequest, DescribeAggregateComplianceByConformancePacksResponse> {
        return .init(
            input: input,
            command: describeAggregateComplianceByConformancePacks,
            inputKey: \DescribeAggregateComplianceByConformancePacksRequest.nextToken,
            outputKey: \DescribeAggregateComplianceByConformancePacksResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns a list of authorizations granted to various aggregator
    ///  			accounts and regions.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeAggregationAuthorizationsPaginator(
        _ input: DescribeAggregationAuthorizationsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeAggregationAuthorizationsRequest, DescribeAggregationAuthorizationsResponse> {
        return .init(
            input: input,
            command: describeAggregationAuthorizations,
            inputKey: \DescribeAggregationAuthorizationsRequest.nextToken,
            outputKey: \DescribeAggregationAuthorizationsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeComplianceByConfigRulePaginator(
        _ input: DescribeComplianceByConfigRuleRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeComplianceByConfigRuleRequest, DescribeComplianceByConfigRuleResponse> {
        return .init(
            input: input,
            command: describeComplianceByConfigRule,
            inputKey: \DescribeComplianceByConfigRuleRequest.nextToken,
            outputKey: \DescribeComplianceByConfigRuleResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeComplianceByResourcePaginator(
        _ input: DescribeComplianceByResourceRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeComplianceByResourceRequest, DescribeComplianceByResourceResponse> {
        return .init(
            input: input,
            command: describeComplianceByResource,
            inputKey: \DescribeComplianceByResourceRequest.nextToken,
            outputKey: \DescribeComplianceByResourceResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConfigRuleEvaluationStatusPaginator(
        _ input: DescribeConfigRuleEvaluationStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConfigRuleEvaluationStatusRequest, DescribeConfigRuleEvaluationStatusResponse> {
        return .init(
            input: input,
            command: describeConfigRuleEvaluationStatus,
            inputKey: \DescribeConfigRuleEvaluationStatusRequest.nextToken,
            outputKey: \DescribeConfigRuleEvaluationStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns details about your Config rules.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConfigRulesPaginator(
        _ input: DescribeConfigRulesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConfigRulesRequest, DescribeConfigRulesResponse> {
        return .init(
            input: input,
            command: describeConfigRules,
            inputKey: \DescribeConfigRulesRequest.nextToken,
            outputKey: \DescribeConfigRulesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConfigurationAggregatorSourcesStatusPaginator(
        _ input: DescribeConfigurationAggregatorSourcesStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConfigurationAggregatorSourcesStatusRequest, DescribeConfigurationAggregatorSourcesStatusResponse> {
        return .init(
            input: input,
            command: describeConfigurationAggregatorSourcesStatus,
            inputKey: \DescribeConfigurationAggregatorSourcesStatusRequest.nextToken,
            outputKey: \DescribeConfigurationAggregatorSourcesStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConfigurationAggregatorsPaginator(
        _ input: DescribeConfigurationAggregatorsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConfigurationAggregatorsRequest, DescribeConfigurationAggregatorsResponse> {
        return .init(
            input: input,
            command: describeConfigurationAggregators,
            inputKey: \DescribeConfigurationAggregatorsRequest.nextToken,
            outputKey: \DescribeConfigurationAggregatorsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns compliance details for each rule in that conformance pack.
    ///  		        You must provide exact rule names.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConformancePackCompliancePaginator(
        _ input: DescribeConformancePackComplianceRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConformancePackComplianceRequest, DescribeConformancePackComplianceResponse> {
        return .init(
            input: input,
            command: describeConformancePackCompliance,
            inputKey: \DescribeConformancePackComplianceRequest.nextToken,
            outputKey: \DescribeConformancePackComplianceResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Provides one or more conformance packs deployment status.
    ///  		        If there are no conformance packs then you will see an empty result.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConformancePackStatusPaginator(
        _ input: DescribeConformancePackStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConformancePackStatusRequest, DescribeConformancePackStatusResponse> {
        return .init(
            input: input,
            command: describeConformancePackStatus,
            inputKey: \DescribeConformancePackStatusRequest.nextToken,
            outputKey: \DescribeConformancePackStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns a list of one or more conformance packs.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeConformancePacksPaginator(
        _ input: DescribeConformancePacksRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeConformancePacksRequest, DescribeConformancePacksResponse> {
        return .init(
            input: input,
            command: describeConformancePacks,
            inputKey: \DescribeConformancePacksRequest.nextToken,
            outputKey: \DescribeConformancePacksResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeOrganizationConfigRuleStatusesPaginator(
        _ input: DescribeOrganizationConfigRuleStatusesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeOrganizationConfigRuleStatusesRequest, DescribeOrganizationConfigRuleStatusesResponse> {
        return .init(
            input: input,
            command: describeOrganizationConfigRuleStatuses,
            inputKey: \DescribeOrganizationConfigRuleStatusesRequest.nextToken,
            outputKey: \DescribeOrganizationConfigRuleStatusesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeOrganizationConfigRulesPaginator(
        _ input: DescribeOrganizationConfigRulesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeOrganizationConfigRulesRequest, DescribeOrganizationConfigRulesResponse> {
        return .init(
            input: input,
            command: describeOrganizationConfigRules,
            inputKey: \DescribeOrganizationConfigRulesRequest.nextToken,
            outputKey: \DescribeOrganizationConfigRulesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeOrganizationConformancePackStatusesPaginator(
        _ input: DescribeOrganizationConformancePackStatusesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeOrganizationConformancePackStatusesRequest, DescribeOrganizationConformancePackStatusesResponse> {
        return .init(
            input: input,
            command: describeOrganizationConformancePackStatuses,
            inputKey: \DescribeOrganizationConformancePackStatusesRequest.nextToken,
            outputKey: \DescribeOrganizationConformancePackStatusesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeOrganizationConformancePacksPaginator(
        _ input: DescribeOrganizationConformancePacksRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeOrganizationConformancePacksRequest, DescribeOrganizationConformancePacksResponse> {
        return .init(
            input: input,
            command: describeOrganizationConformancePacks,
            inputKey: \DescribeOrganizationConformancePacksRequest.nextToken,
            outputKey: \DescribeOrganizationConformancePacksResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns a list of all pending aggregation requests.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describePendingAggregationRequestsPaginator(
        _ input: DescribePendingAggregationRequestsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribePendingAggregationRequestsRequest, DescribePendingAggregationRequestsResponse> {
        return .init(
            input: input,
            command: describePendingAggregationRequests,
            inputKey: \DescribePendingAggregationRequestsRequest.nextToken,
            outputKey: \DescribePendingAggregationRequestsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeRemediationExceptionsPaginator(
        _ input: DescribeRemediationExceptionsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeRemediationExceptionsRequest, DescribeRemediationExceptionsResponse> {
        return .init(
            input: input,
            command: describeRemediationExceptions,
            inputKey: \DescribeRemediationExceptionsRequest.nextToken,
            outputKey: \DescribeRemediationExceptionsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeRemediationExecutionStatusPaginator(
        _ input: DescribeRemediationExecutionStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeRemediationExecutionStatusRequest, DescribeRemediationExecutionStatusResponse> {
        return .init(
            input: input,
            command: describeRemediationExecutionStatus,
            inputKey: \DescribeRemediationExecutionStatusRequest.nextToken,
            outputKey: \DescribeRemediationExecutionStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func describeRetentionConfigurationsPaginator(
        _ input: DescribeRetentionConfigurationsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<DescribeRetentionConfigurationsRequest, DescribeRetentionConfigurationsResponse> {
        return .init(
            input: input,
            command: describeRetentionConfigurations,
            inputKey: \DescribeRetentionConfigurationsRequest.nextToken,
            outputKey: \DescribeRetentionConfigurationsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getAggregateComplianceDetailsByConfigRulePaginator(
        _ input: GetAggregateComplianceDetailsByConfigRuleRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetAggregateComplianceDetailsByConfigRuleRequest, GetAggregateComplianceDetailsByConfigRuleResponse> {
        return .init(
            input: input,
            command: getAggregateComplianceDetailsByConfigRule,
            inputKey: \GetAggregateComplianceDetailsByConfigRuleRequest.nextToken,
            outputKey: \GetAggregateComplianceDetailsByConfigRuleResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getAggregateConfigRuleComplianceSummaryPaginator(
        _ input: GetAggregateConfigRuleComplianceSummaryRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetAggregateConfigRuleComplianceSummaryRequest, GetAggregateConfigRuleComplianceSummaryResponse> {
        return .init(
            input: input,
            command: getAggregateConfigRuleComplianceSummary,
            inputKey: \GetAggregateConfigRuleComplianceSummaryRequest.nextToken,
            outputKey: \GetAggregateConfigRuleComplianceSummaryResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getAggregateConformancePackComplianceSummaryPaginator(
        _ input: GetAggregateConformancePackComplianceSummaryRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetAggregateConformancePackComplianceSummaryRequest, GetAggregateConformancePackComplianceSummaryResponse> {
        return .init(
            input: input,
            command: getAggregateConformancePackComplianceSummary,
            inputKey: \GetAggregateConformancePackComplianceSummaryRequest.nextToken,
            outputKey: \GetAggregateConformancePackComplianceSummaryResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getAggregateDiscoveredResourceCountsPaginator(
        _ input: GetAggregateDiscoveredResourceCountsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetAggregateDiscoveredResourceCountsRequest, GetAggregateDiscoveredResourceCountsResponse> {
        return .init(
            input: input,
            command: getAggregateDiscoveredResourceCounts,
            inputKey: \GetAggregateDiscoveredResourceCountsRequest.nextToken,
            outputKey: \GetAggregateDiscoveredResourceCountsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getComplianceDetailsByConfigRulePaginator(
        _ input: GetComplianceDetailsByConfigRuleRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetComplianceDetailsByConfigRuleRequest, GetComplianceDetailsByConfigRuleResponse> {
        return .init(
            input: input,
            command: getComplianceDetailsByConfigRule,
            inputKey: \GetComplianceDetailsByConfigRuleRequest.nextToken,
            outputKey: \GetComplianceDetailsByConfigRuleResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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 used, and whether the resource
    ///  			complies with each rule.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getComplianceDetailsByResourcePaginator(
        _ input: GetComplianceDetailsByResourceRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetComplianceDetailsByResourceRequest, GetComplianceDetailsByResourceResponse> {
        return .init(
            input: input,
            command: getComplianceDetailsByResource,
            inputKey: \GetComplianceDetailsByResourceRequest.nextToken,
            outputKey: \GetComplianceDetailsByResourceResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns compliance details of a conformance pack for all Amazon Web Services resources that are monitered by conformance pack.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getConformancePackComplianceDetailsPaginator(
        _ input: GetConformancePackComplianceDetailsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetConformancePackComplianceDetailsRequest, GetConformancePackComplianceDetailsResponse> {
        return .init(
            input: input,
            command: getConformancePackComplianceDetails,
            inputKey: \GetConformancePackComplianceDetailsRequest.nextToken,
            outputKey: \GetConformancePackComplianceDetailsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns compliance details for the conformance pack based on the cumulative compliance results of all the rules in that conformance pack.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getConformancePackComplianceSummaryPaginator(
        _ input: GetConformancePackComplianceSummaryRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetConformancePackComplianceSummaryRequest, GetConformancePackComplianceSummaryResponse> {
        return .init(
            input: input,
            command: getConformancePackComplianceSummary,
            inputKey: \GetConformancePackComplianceSummaryRequest.nextToken,
            outputKey: \GetConformancePackComplianceSummaryResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getDiscoveredResourceCountsPaginator(
        _ input: GetDiscoveredResourceCountsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetDiscoveredResourceCountsRequest, GetDiscoveredResourceCountsResponse> {
        return .init(
            input: input,
            command: getDiscoveredResourceCounts,
            inputKey: \GetDiscoveredResourceCountsRequest.nextToken,
            outputKey: \GetDiscoveredResourceCountsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns detailed status for each member account within an organization for a given organization config rule.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getOrganizationConfigRuleDetailedStatusPaginator(
        _ input: GetOrganizationConfigRuleDetailedStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetOrganizationConfigRuleDetailedStatusRequest, GetOrganizationConfigRuleDetailedStatusResponse> {
        return .init(
            input: input,
            command: getOrganizationConfigRuleDetailedStatus,
            inputKey: \GetOrganizationConfigRuleDetailedStatusRequest.nextToken,
            outputKey: \GetOrganizationConfigRuleDetailedStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Returns detailed status for each member account within an organization for a given organization conformance pack.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getOrganizationConformancePackDetailedStatusPaginator(
        _ input: GetOrganizationConformancePackDetailedStatusRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetOrganizationConformancePackDetailedStatusRequest, GetOrganizationConformancePackDetailedStatusResponse> {
        return .init(
            input: input,
            command: getOrganizationConformancePackDetailedStatus,
            inputKey: \GetOrganizationConformancePackDetailedStatusRequest.nextToken,
            outputKey: \GetOrganizationConformancePackDetailedStatusResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func getResourceConfigHistoryPaginator(
        _ input: GetResourceConfigHistoryRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<GetResourceConfigHistoryRequest, GetResourceConfigHistoryResponse> {
        return .init(
            input: input,
            command: getResourceConfigHistory,
            inputKey: \GetResourceConfigHistoryRequest.nextToken,
            outputKey: \GetResourceConfigHistoryResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listAggregateDiscoveredResourcesPaginator(
        _ input: ListAggregateDiscoveredResourcesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListAggregateDiscoveredResourcesRequest, ListAggregateDiscoveredResourcesResponse> {
        return .init(
            input: input,
            command: listAggregateDiscoveredResources,
            inputKey: \ListAggregateDiscoveredResourcesRequest.nextToken,
            outputKey: \ListAggregateDiscoveredResourcesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  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.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listDiscoveredResourcesPaginator(
        _ input: ListDiscoveredResourcesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListDiscoveredResourcesRequest, ListDiscoveredResourcesResponse> {
        return .init(
            input: input,
            command: listDiscoveredResources,
            inputKey: \ListDiscoveredResourcesRequest.nextToken,
            outputKey: \ListDiscoveredResourcesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Lists the stored queries for a single Amazon Web Services account and a single Amazon Web Services Region. The default is 100.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listStoredQueriesPaginator(
        _ input: ListStoredQueriesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListStoredQueriesRequest, ListStoredQueriesResponse> {
        return .init(
            input: input,
            command: listStoredQueries,
            inputKey: \ListStoredQueriesRequest.nextToken,
            outputKey: \ListStoredQueriesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  List the tags for Config resource.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listTagsForResourcePaginator(
        _ input: ListTagsForResourceRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListTagsForResourceRequest, ListTagsForResourceResponse> {
        return .init(
            input: input,
            command: listTagsForResource,
            inputKey: \ListTagsForResourceRequest.nextToken,
            outputKey: \ListTagsForResourceResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Accepts a structured query language (SQL) SELECT command and an aggregator to query configuration state of Amazon Web Services resources across multiple accounts and regions,
    ///  			performs the corresponding search, and returns resource configurations matching the properties.
    ///  		       For more information about query components, see the
    ///  			 Query Components section in the Config Developer Guide.
    ///
    ///
    ///  			         If you run an aggregation query (i.e., using GROUP BY or using aggregate functions such as COUNT; e.g., SELECT resourceId, COUNT(*) WHERE resourceType = 'AWS::IAM::Role' GROUP BY resourceId)
    ///  				and do not specify the MaxResults or the Limit query parameters, the default page size is set to 500.
    ///
    ///  			         If you run a non-aggregation query (i.e., not using GROUP BY or aggregate function; e.g., SELECT * WHERE resourceType = 'AWS::IAM::Role')
    ///  				and do not specify the MaxResults or the Limit query parameters, the default page size is set to 25.
    ///
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func selectAggregateResourceConfigPaginator(
        _ input: SelectAggregateResourceConfigRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SelectAggregateResourceConfigRequest, SelectAggregateResourceConfigResponse> {
        return .init(
            input: input,
            command: selectAggregateResourceConfig,
            inputKey: \SelectAggregateResourceConfigRequest.nextToken,
            outputKey: \SelectAggregateResourceConfigResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    ///  Accepts a structured query language (SQL) SELECT command, performs the corresponding search, and returns resource configurations matching the properties.
    ///  		       For more information about query components, see the
    ///  			 Query Components section in the Config Developer Guide.
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func selectResourceConfigPaginator(
        _ input: SelectResourceConfigRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SelectResourceConfigRequest, SelectResourceConfigResponse> {
        return .init(
            input: input,
            command: selectResourceConfig,
            inputKey: \SelectResourceConfigRequest.nextToken,
            outputKey: \SelectResourceConfigResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }
}

#endif // compiler(>=5.5) && canImport(_Concurrency)
