{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2014-11-12",
    "endpointPrefix":"config",
    "jsonVersion":"1.1",
    "protocol":"json",
    "protocols":["json"],
    "serviceAbbreviation":"Config Service",
    "serviceFullName":"AWS Config",
    "serviceId":"Config Service",
    "signatureVersion":"v4",
    "targetPrefix":"StarlingDoveService",
    "uid":"config-2014-11-12",
    "auth":["aws.auth#sigv4"]
  },
  "operations":{
    "AssociateResourceTypes":{
      "name":"AssociateResourceTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"AssociateResourceTypesRequest"},
      "output":{"shape":"AssociateResourceTypesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"NoSuchConfigurationRecorderException"}
      ],
      "documentation":"<p>Adds all resource types specified in the <code>ResourceTypes</code> list to the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> of specified configuration recorder and includes those resource types when recording.</p> <p>For this operation, the specified configuration recorder must use a <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> that is either <code>INCLUSION_BY_RESOURCE_TYPES</code> or <code>EXCLUSION_BY_RESOURCE_TYPES</code>.</p>"
    },
    "BatchGetAggregateResourceConfig":{
      "name":"BatchGetAggregateResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetAggregateResourceConfigRequest"},
      "output":{"shape":"BatchGetAggregateResourceConfigResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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 <code>unprocessedResourceIdentifiers</code> list. </p> <note> <ul> <li> <p>The API does not return results for deleted resources.</p> </li> <li> <p> The API does not return tags and relationships.</p> </li> </ul> </note>"
    },
    "BatchGetResourceConfig":{
      "name":"BatchGetResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetResourceConfigRequest"},
      "output":{"shape":"BatchGetResourceConfigResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NoAvailableConfigurationRecorderException"}
      ],
      "documentation":"<p>Returns the <code>BaseConfigurationItem</code> 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. </p> <note> <ul> <li> <p>The API does not return results for deleted resources.</p> </li> <li> <p> The API does not return any tags for the requested resources. This information is filtered out of the supplementaryConfiguration section of the API response.</p> </li> </ul> </note>"
    },
    "DeleteAggregationAuthorization":{
      "name":"DeleteAggregationAuthorization",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteAggregationAuthorizationRequest"},
      "errors":[
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Deletes the authorization granted to the specified configuration aggregator account in a specified region.</p>"
    },
    "DeleteConfigRule":{
      "name":"DeleteConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteConfigRuleRequest"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"ResourceInUseException"}
      ],
      "documentation":"<p>Deletes the specified Config rule and all of its evaluation results.</p> <p>Config sets the state of a rule to <code>DELETING</code> until the deletion is complete. You cannot update a rule while it is in this state. If you make a <code>PutConfigRule</code> or <code>DeleteConfigRule</code> request for the rule, you will receive a <code>ResourceInUseException</code>.</p> <p>You can check the state of a rule by using the <code>DescribeConfigRules</code> request.</p> <note> <p> <b>Recommendation: Stop recording resource compliance before deleting rules</b> </p> <p>It is highly recommended that you stop recording for the <code>AWS::Config::ResourceCompliance</code> resource type before you delete rules in your account. Deleting rules creates CIs for <code>AWS::Config::ResourceCompliance</code> and can affect your Config <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html\">configuration recorder</a> costs. If you are deleting rules which evaluate a large number of resource types, this can lead to a spike in the number of CIs recorded.</p> <p>Best practice:</p> <ol> <li> <p>Stop recording <code>AWS::Config::ResourceCompliance</code> </p> </li> <li> <p>Delete rule(s)</p> </li> <li> <p>Turn on recording for <code>AWS::Config::ResourceCompliance</code> </p> </li> </ol> </note>"
    },
    "DeleteConfigurationAggregator":{
      "name":"DeleteConfigurationAggregator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteConfigurationAggregatorRequest"},
      "errors":[
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>Deletes the specified configuration aggregator and the aggregated data associated with the aggregator.</p>"
    },
    "DeleteConfigurationRecorder":{
      "name":"DeleteConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteConfigurationRecorderRequest"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"UnmodifiableEntityException"}
      ],
      "documentation":"<p>Deletes the customer managed configuration recorder.</p> <p>This operation does not delete the configuration information that was previously recorded. You will be able to access the previously recorded information by using the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceConfigHistory.html\">GetResourceConfigHistory</a> operation, but you will not be able to access this information in the Config console until you have created a new customer managed configuration recorder.</p>"
    },
    "DeleteConformancePack":{
      "name":"DeleteConformancePack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteConformancePackRequest"},
      "errors":[
        {"shape":"NoSuchConformancePackException"},
        {"shape":"ResourceInUseException"}
      ],
      "documentation":"<p>Deletes the specified conformance pack and all the Config rules, remediation actions, and all evaluation results within that conformance pack.</p> <p>Config sets the conformance pack to <code>DELETE_IN_PROGRESS</code> until the deletion is complete. You cannot update a conformance pack while it is in this state.</p>"
    },
    "DeleteDeliveryChannel":{
      "name":"DeleteDeliveryChannel",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteDeliveryChannelRequest"},
      "errors":[
        {"shape":"NoSuchDeliveryChannelException"},
        {"shape":"LastDeliveryChannelDeleteFailedException"}
      ],
      "documentation":"<p>Deletes the delivery channel.</p> <p>Before you can delete the delivery channel, you must stop the customer managed configuration recorder. You can use the <a>StopConfigurationRecorder</a> operation to stop the customer managed configuration recorder.</p>"
    },
    "DeleteEvaluationResults":{
      "name":"DeleteEvaluationResults",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteEvaluationResultsRequest"},
      "output":{"shape":"DeleteEvaluationResultsResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"ResourceInUseException"}
      ],
      "documentation":"<p>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 <a>StartConfigRulesEvaluation</a> API to start evaluating your Amazon Web Services resources against the rule.</p>"
    },
    "DeleteOrganizationConfigRule":{
      "name":"DeleteOrganizationConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteOrganizationConfigRuleRequest"},
      "errors":[
        {"shape":"NoSuchOrganizationConfigRuleException"},
        {"shape":"ResourceInUseException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Deletes the specified organization Config rule and all of its evaluation results from all member accounts in that organization. </p> <p>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 <code>ListDelegatedAdministrator</code> permissions are added.</p> <p>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.</p>"
    },
    "DeleteOrganizationConformancePack":{
      "name":"DeleteOrganizationConformancePack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteOrganizationConformancePackRequest"},
      "errors":[
        {"shape":"NoSuchOrganizationConformancePackException"},
        {"shape":"ResourceInUseException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Deletes the specified organization conformance pack and all of the Config rules and remediation actions from all member accounts in that organization. </p> <p> 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 <code>ListDelegatedAdministrator</code> permissions are added.</p> <p>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. </p>"
    },
    "DeletePendingAggregationRequest":{
      "name":"DeletePendingAggregationRequest",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeletePendingAggregationRequestRequest"},
      "errors":[
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Deletes pending authorization requests for a specified aggregator account in a specified region.</p>"
    },
    "DeleteRemediationConfiguration":{
      "name":"DeleteRemediationConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteRemediationConfigurationRequest"},
      "output":{"shape":"DeleteRemediationConfigurationResponse"},
      "errors":[
        {"shape":"NoSuchRemediationConfigurationException"},
        {"shape":"RemediationInProgressException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Deletes the remediation configuration.</p>"
    },
    "DeleteRemediationExceptions":{
      "name":"DeleteRemediationExceptions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteRemediationExceptionsRequest"},
      "output":{"shape":"DeleteRemediationExceptionsResponse"},
      "errors":[
        {"shape":"NoSuchRemediationExceptionException"}
      ],
      "documentation":"<p>Deletes one or more remediation exceptions mentioned in the resource keys.</p> <note> <p>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.</p> </note>"
    },
    "DeleteResourceConfig":{
      "name":"DeleteResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteResourceConfigRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NoRunningConfigurationRecorderException"}
      ],
      "documentation":"<p>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. </p>"
    },
    "DeleteRetentionConfiguration":{
      "name":"DeleteRetentionConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteRetentionConfigurationRequest"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchRetentionConfigurationException"}
      ],
      "documentation":"<p>Deletes the retention configuration.</p>"
    },
    "DeleteServiceLinkedConfigurationRecorder":{
      "name":"DeleteServiceLinkedConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteServiceLinkedConfigurationRecorderRequest"},
      "output":{"shape":"DeleteServiceLinkedConfigurationRecorderResponse"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Deletes an existing service-linked configuration recorder.</p> <p>This operation does not delete the configuration information that was previously recorded. You will be able to access the previously recorded information by using the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceConfigHistory.html\">GetResourceConfigHistory</a> operation, but you will not be able to access this information in the Config console until you have created a new service-linked configuration recorder for the same service.</p> <note> <p> <b>The recording scope determines if you receive configuration items</b> </p> <p>The recording scope is set by the service that is linked to the configuration recorder and determines whether you receive configuration items (CIs) in the delivery channel. If the recording scope is internal, you will not receive CIs in the delivery channel.</p> </note>"
    },
    "DeleteStoredQuery":{
      "name":"DeleteStoredQuery",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteStoredQueryRequest"},
      "output":{"shape":"DeleteStoredQueryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Deletes the stored query for a single Amazon Web Services account and a single Amazon Web Services Region.</p>"
    },
    "DeliverConfigSnapshot":{
      "name":"DeliverConfigSnapshot",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeliverConfigSnapshotRequest"},
      "output":{"shape":"DeliverConfigSnapshotResponse"},
      "errors":[
        {"shape":"NoSuchDeliveryChannelException"},
        {"shape":"NoAvailableConfigurationRecorderException"},
        {"shape":"NoRunningConfigurationRecorderException"}
      ],
      "documentation":"<p>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.</p> <ul> <li> <p>Notification of the start of the delivery.</p> </li> <li> <p>Notification of the completion of the delivery, if the delivery was successfully completed.</p> </li> <li> <p>Notification of delivery failure, if the delivery failed.</p> </li> </ul>"
    },
    "DescribeAggregateComplianceByConfigRules":{
      "name":"DescribeAggregateComplianceByConfigRules",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeAggregateComplianceByConfigRulesRequest"},
      "output":{"shape":"DescribeAggregateComplianceByConfigRulesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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. </p> <note> <p>The results can return an empty result page, but if you have a <code>nextToken</code>, the results are displayed on the next page.</p> </note>"
    },
    "DescribeAggregateComplianceByConformancePacks":{
      "name":"DescribeAggregateComplianceByConformancePacks",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeAggregateComplianceByConformancePacksRequest"},
      "output":{"shape":"DescribeAggregateComplianceByConformancePacksResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>Returns a list of the existing and deleted 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.</p> <note> <p>The results can return an empty result page, but if you have a <code>nextToken</code>, the results are displayed on the next page.</p> </note>"
    },
    "DescribeAggregationAuthorizations":{
      "name":"DescribeAggregationAuthorizations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeAggregationAuthorizationsRequest"},
      "output":{"shape":"DescribeAggregationAuthorizationsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"}
      ],
      "documentation":"<p>Returns a list of authorizations granted to various aggregator accounts and regions.</p>"
    },
    "DescribeComplianceByConfigRule":{
      "name":"DescribeComplianceByConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeComplianceByConfigRuleRequest"},
      "output":{"shape":"DescribeComplianceByConfigRuleResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Indicates whether the specified Config rules are compliant. If a rule is noncompliant, this operation returns the number of Amazon Web Services resources that do not comply with the rule.</p> <p>A rule is compliant if all of the evaluated resources comply with it. It is noncompliant if any of these resources do not comply.</p> <p>If Config has no current evaluation results for the rule, it returns <code>INSUFFICIENT_DATA</code>. This result might indicate one of the following conditions:</p> <ul> <li> <p>Config has never invoked an evaluation for the rule. To check whether it has, use the <code>DescribeConfigRuleEvaluationStatus</code> action to get the <code>LastSuccessfulInvocationTime</code> and <code>LastFailedInvocationTime</code>.</p> </li> <li> <p>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 <code>config:PutEvaluations</code> permission. If the rule is a custom rule, verify that the Lambda execution role includes the <code>config:PutEvaluations</code> permission.</p> </li> <li> <p>The rule's Lambda function has returned <code>NOT_APPLICABLE</code> for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope.</p> </li> </ul>"
    },
    "DescribeComplianceByResource":{
      "name":"DescribeComplianceByResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeComplianceByResourceRequest"},
      "output":{"shape":"DescribeComplianceByResourceResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Indicates whether the specified Amazon Web Services resources are compliant. If a resource is noncompliant, this operation returns the number of Config rules that the resource does not comply with.</p> <p>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.</p> <p>If Config has no current evaluation results for the resource, it returns <code>INSUFFICIENT_DATA</code>. This result might indicate one of the following conditions about the rules that evaluate the resource:</p> <ul> <li> <p>Config has never invoked an evaluation for the rule. To check whether it has, use the <code>DescribeConfigRuleEvaluationStatus</code> action to get the <code>LastSuccessfulInvocationTime</code> and <code>LastFailedInvocationTime</code>.</p> </li> <li> <p>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 <code>config:PutEvaluations</code> permission. If the rule is a custom rule, verify that the Lambda execution role includes the <code>config:PutEvaluations</code> permission.</p> </li> <li> <p>The rule's Lambda function has returned <code>NOT_APPLICABLE</code> for all evaluation results. This can occur if the resources were deleted or removed from the rule's scope.</p> </li> </ul>"
    },
    "DescribeConfigRuleEvaluationStatus":{
      "name":"DescribeConfigRuleEvaluationStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigRuleEvaluationStatusRequest"},
      "output":{"shape":"DescribeConfigRuleEvaluationStatusResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "DescribeConfigRules":{
      "name":"DescribeConfigRules",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigRulesRequest"},
      "output":{"shape":"DescribeConfigRulesResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Returns details about your Config rules.</p>"
    },
    "DescribeConfigurationAggregatorSourcesStatus":{
      "name":"DescribeConfigurationAggregatorSourcesStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigurationAggregatorSourcesStatusRequest"},
      "output":{"shape":"DescribeConfigurationAggregatorSourcesStatusResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchConfigurationAggregatorException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"}
      ],
      "documentation":"<p>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. </p>"
    },
    "DescribeConfigurationAggregators":{
      "name":"DescribeConfigurationAggregators",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigurationAggregatorsRequest"},
      "output":{"shape":"DescribeConfigurationAggregatorsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchConfigurationAggregatorException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"}
      ],
      "documentation":"<p>Returns the details of one or more configuration aggregators. If the configuration aggregator is not specified, this operation returns the details for all the configuration aggregators associated with the account. </p>"
    },
    "DescribeConfigurationRecorderStatus":{
      "name":"DescribeConfigurationRecorderStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigurationRecorderStatusRequest"},
      "output":{"shape":"DescribeConfigurationRecorderStatusResponse"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Returns the current status of the configuration recorder you specify as well as the status of the last recording event for the configuration recorders.</p> <p>For a detailed status of recording events over time, add your Config events to Amazon CloudWatch metrics and use CloudWatch metrics.</p> <p>If a configuration recorder is not specified, this operation returns the status for the customer managed configuration recorder configured for the account, if applicable.</p> <note> <p>When making a request to this operation, you can only specify one configuration recorder.</p> </note>"
    },
    "DescribeConfigurationRecorders":{
      "name":"DescribeConfigurationRecorders",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConfigurationRecordersRequest"},
      "output":{"shape":"DescribeConfigurationRecordersResponse"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Returns details for the configuration recorder you specify.</p> <p>If a configuration recorder is not specified, this operation returns details for the customer managed configuration recorder configured for the account, if applicable.</p> <note> <p>When making a request to this operation, you can only specify one configuration recorder.</p> </note>"
    },
    "DescribeConformancePackCompliance":{
      "name":"DescribeConformancePackCompliance",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConformancePackComplianceRequest"},
      "output":{"shape":"DescribeConformancePackComplianceResponse"},
      "errors":[
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchConfigRuleInConformancePackException"},
        {"shape":"NoSuchConformancePackException"}
      ],
      "documentation":"<p>Returns compliance details for each rule in that conformance pack.</p> <note> <p>You must provide exact rule names.</p> </note>"
    },
    "DescribeConformancePackStatus":{
      "name":"DescribeConformancePackStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConformancePackStatusRequest"},
      "output":{"shape":"DescribeConformancePackStatusResponse"},
      "errors":[
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Provides one or more conformance packs deployment status.</p> <note> <p>If there are no conformance packs then you will see an empty result.</p> </note>"
    },
    "DescribeConformancePacks":{
      "name":"DescribeConformancePacks",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeConformancePacksRequest"},
      "output":{"shape":"DescribeConformancePacksResponse"},
      "errors":[
        {"shape":"NoSuchConformancePackException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Returns a list of one or more conformance packs.</p>"
    },
    "DescribeDeliveryChannelStatus":{
      "name":"DescribeDeliveryChannelStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeDeliveryChannelStatusRequest"},
      "output":{"shape":"DescribeDeliveryChannelStatusResponse"},
      "errors":[
        {"shape":"NoSuchDeliveryChannelException"}
      ],
      "documentation":"<p>Returns the current status of the specified delivery channel. If a delivery channel is not specified, this operation returns the current status of all delivery channels associated with the account.</p> <note> <p>Currently, you can specify only one delivery channel per region in your account.</p> </note>"
    },
    "DescribeDeliveryChannels":{
      "name":"DescribeDeliveryChannels",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeDeliveryChannelsRequest"},
      "output":{"shape":"DescribeDeliveryChannelsResponse"},
      "errors":[
        {"shape":"NoSuchDeliveryChannelException"}
      ],
      "documentation":"<p>Returns details about the specified delivery channel. If a delivery channel is not specified, this operation returns the details of all delivery channels associated with the account.</p> <note> <p>Currently, you can specify only one delivery channel per region in your account.</p> </note>"
    },
    "DescribeOrganizationConfigRuleStatuses":{
      "name":"DescribeOrganizationConfigRuleStatuses",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeOrganizationConfigRuleStatusesRequest"},
      "output":{"shape":"DescribeOrganizationConfigRuleStatusesResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConfigRuleException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Provides organization Config rule deployment status for an organization.</p> <note> <p>The status is not considered successful until organization Config rule is successfully deployed in all the member accounts with an exception of excluded accounts.</p> <p>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.</p> </note>"
    },
    "DescribeOrganizationConfigRules":{
      "name":"DescribeOrganizationConfigRules",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeOrganizationConfigRulesRequest"},
      "output":{"shape":"DescribeOrganizationConfigRulesResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConfigRuleException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Returns a list of organization Config rules. </p> <note> <p>When you specify the limit and the next token, you receive a paginated response.</p> <p>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.</p> <p> <i>For accounts within an organization</i> </p> <p>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 <code>DescribeOrganizationConfigRules</code> and <code>DescribeOrganizationConformancePacks</code> APIs can only see and interact with the organization-related resource that were deployed from within the account calling those APIs.</p> </note>"
    },
    "DescribeOrganizationConformancePackStatuses":{
      "name":"DescribeOrganizationConformancePackStatuses",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeOrganizationConformancePackStatusesRequest"},
      "output":{"shape":"DescribeOrganizationConformancePackStatusesResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConformancePackException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Provides organization conformance pack deployment status for an organization. </p> <note> <p>The status is not considered successful until organization conformance pack is successfully deployed in all the member accounts with an exception of excluded accounts.</p> <p>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.</p> </note>"
    },
    "DescribeOrganizationConformancePacks":{
      "name":"DescribeOrganizationConformancePacks",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeOrganizationConformancePacksRequest"},
      "output":{"shape":"DescribeOrganizationConformancePacksResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConformancePackException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Returns a list of organization conformance packs. </p> <note> <p>When you specify the limit and the next token, you receive a paginated response. </p> <p>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. </p> <p> <i>For accounts within an organization</i> </p> <p>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 <code>DescribeOrganizationConfigRules</code> and <code>DescribeOrganizationConformancePacks</code> APIs can only see and interact with the organization-related resource that were deployed from within the account calling those APIs.</p> </note>"
    },
    "DescribePendingAggregationRequests":{
      "name":"DescribePendingAggregationRequests",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribePendingAggregationRequestsRequest"},
      "output":{"shape":"DescribePendingAggregationRequestsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidLimitException"}
      ],
      "documentation":"<p>Returns a list of all pending aggregation requests.</p>"
    },
    "DescribeRemediationConfigurations":{
      "name":"DescribeRemediationConfigurations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeRemediationConfigurationsRequest"},
      "output":{"shape":"DescribeRemediationConfigurationsResponse"},
      "documentation":"<p>Returns the details of one or more remediation configurations.</p>"
    },
    "DescribeRemediationExceptions":{
      "name":"DescribeRemediationExceptions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeRemediationExceptionsRequest"},
      "output":{"shape":"DescribeRemediationExceptionsResponse"},
      "errors":[
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>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. </p> <note> <p>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.</p> <p>When you specify the limit and the next token, you receive a paginated response. </p> <p>Limit and next token are not applicable if you request resources in batch. It is only applicable, when you request all resources.</p> </note>"
    },
    "DescribeRemediationExecutionStatus":{
      "name":"DescribeRemediationExecutionStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeRemediationExecutionStatusRequest"},
      "output":{"shape":"DescribeRemediationExecutionStatusResponse"},
      "errors":[
        {"shape":"NoSuchRemediationConfigurationException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "DescribeRetentionConfigurations":{
      "name":"DescribeRetentionConfigurations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeRetentionConfigurationsRequest"},
      "output":{"shape":"DescribeRetentionConfigurationsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"NoSuchRetentionConfigurationException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Returns the details of one or more retention configurations. If the retention configuration name is not specified, this operation returns the details for all the retention configurations for that account.</p> <note> <p>Currently, Config supports only one retention configuration per region in your account.</p> </note>"
    },
    "DisassociateResourceTypes":{
      "name":"DisassociateResourceTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DisassociateResourceTypesRequest"},
      "output":{"shape":"DisassociateResourceTypesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"NoSuchConfigurationRecorderException"}
      ],
      "documentation":"<p>Removes all resource types specified in the <code>ResourceTypes</code> list from the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> of configuration recorder and excludes these resource types when recording.</p> <p>For this operation, the configuration recorder must use a <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> that is either <code>INCLUSION_BY_RESOURCE_TYPES</code> or <code>EXCLUSION_BY_RESOURCE_TYPES</code>.</p>"
    },
    "GetAggregateComplianceDetailsByConfigRule":{
      "name":"GetAggregateComplianceDetailsByConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetAggregateComplianceDetailsByConfigRuleRequest"},
      "output":{"shape":"GetAggregateComplianceDetailsByConfigRuleResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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. </p> <note> <p>The results can return an empty result page. But if you have a <code>nextToken</code>, the results are displayed on the next page.</p> </note>"
    },
    "GetAggregateConfigRuleComplianceSummary":{
      "name":"GetAggregateConfigRuleComplianceSummary",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetAggregateConfigRuleComplianceSummaryRequest"},
      "output":{"shape":"GetAggregateConfigRuleComplianceSummaryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>Returns the number of compliant and noncompliant rules for one or more accounts and regions in an aggregator.</p> <note> <p>The results can return an empty result page, but if you have a nextToken, the results are displayed on the next page.</p> </note>"
    },
    "GetAggregateConformancePackComplianceSummary":{
      "name":"GetAggregateConformancePackComplianceSummary",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetAggregateConformancePackComplianceSummaryRequest"},
      "output":{"shape":"GetAggregateConformancePackComplianceSummaryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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.</p> <note> <p>The results can return an empty result page, but if you have a nextToken, the results are displayed on the next page.</p> </note>"
    },
    "GetAggregateDiscoveredResourceCounts":{
      "name":"GetAggregateDiscoveredResourceCounts",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetAggregateDiscoveredResourceCountsRequest"},
      "output":{"shape":"GetAggregateDiscoveredResourceCountsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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.</p> <p>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.</p>"
    },
    "GetAggregateResourceConfig":{
      "name":"GetAggregateResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetAggregateResourceConfigRequest"},
      "output":{"shape":"GetAggregateResourceConfigResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NoSuchConfigurationAggregatorException"},
        {"shape":"OversizedConfigurationItemException"},
        {"shape":"ResourceNotDiscoveredException"}
      ],
      "documentation":"<p>Returns configuration item that is aggregated for your specific resource in a specific source account and region.</p> <note> <p>The API does not return results for deleted resources.</p> </note>"
    },
    "GetComplianceDetailsByConfigRule":{
      "name":"GetComplianceDetailsByConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetComplianceDetailsByConfigRuleRequest"},
      "output":{"shape":"GetComplianceDetailsByConfigRuleResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigRuleException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "GetComplianceDetailsByResource":{
      "name":"GetComplianceDetailsByResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetComplianceDetailsByResourceRequest"},
      "output":{"shape":"GetComplianceDetailsByResourceResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "GetComplianceSummaryByConfigRule":{
      "name":"GetComplianceSummaryByConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "output":{"shape":"GetComplianceSummaryByConfigRuleResponse"},
      "documentation":"<p>Returns the number of Config rules that are compliant and noncompliant, up to a maximum of 25 for each.</p>"
    },
    "GetComplianceSummaryByResourceType":{
      "name":"GetComplianceSummaryByResourceType",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetComplianceSummaryByResourceTypeRequest"},
      "output":{"shape":"GetComplianceSummaryByResourceTypeResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "GetConformancePackComplianceDetails":{
      "name":"GetConformancePackComplianceDetails",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetConformancePackComplianceDetailsRequest"},
      "output":{"shape":"GetConformancePackComplianceDetailsResponse"},
      "errors":[
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConformancePackException"},
        {"shape":"NoSuchConfigRuleInConformancePackException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Returns compliance details of a conformance pack for all Amazon Web Services resources that are monitered by conformance pack.</p>"
    },
    "GetConformancePackComplianceSummary":{
      "name":"GetConformancePackComplianceSummary",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetConformancePackComplianceSummaryRequest"},
      "output":{"shape":"GetConformancePackComplianceSummaryResponse"},
      "errors":[
        {"shape":"NoSuchConformancePackException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Returns compliance details for the conformance pack based on the cumulative compliance results of all the rules in that conformance pack.</p>"
    },
    "GetCustomRulePolicy":{
      "name":"GetCustomRulePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCustomRulePolicyRequest"},
      "output":{"shape":"GetCustomRulePolicyResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"}
      ],
      "documentation":"<p>Returns the policy definition containing the logic for your Config Custom Policy rule.</p>"
    },
    "GetDiscoveredResourceCounts":{
      "name":"GetDiscoveredResourceCounts",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDiscoveredResourceCountsRequest"},
      "output":{"shape":"GetDiscoveredResourceCountsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>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. </p> <p class=\"title\"> <b>Example</b> </p> <ol> <li> <p>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.</p> </li> <li> <p>You make a call to the <code>GetDiscoveredResourceCounts</code> action and specify that you want all resource types. </p> </li> <li> <p>Config returns the following:</p> <ul> <li> <p>The resource types (EC2 instances, IAM users, and S3 buckets).</p> </li> <li> <p>The number of each resource type (25, 20, and 15).</p> </li> <li> <p>The total number of all resources (60).</p> </li> </ul> </li> </ol> <p>The response is paginated. By default, Config lists 100 <a>ResourceCount</a> objects on each page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p> <note> <p>If you make a call to the <a>GetDiscoveredResourceCounts</a> action, you might not immediately receive resource counts in the following situations:</p> <ul> <li> <p>You are a new Config customer.</p> </li> <li> <p>You just enabled resource recording.</p> </li> </ul> <p>It might take a few minutes for Config to record and count your resources. Wait a few minutes and then retry the <a>GetDiscoveredResourceCounts</a> action. </p> </note>"
    },
    "GetOrganizationConfigRuleDetailedStatus":{
      "name":"GetOrganizationConfigRuleDetailedStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetOrganizationConfigRuleDetailedStatusRequest"},
      "output":{"shape":"GetOrganizationConfigRuleDetailedStatusResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConfigRuleException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Returns detailed status for each member account within an organization for a given organization Config rule.</p>"
    },
    "GetOrganizationConformancePackDetailedStatus":{
      "name":"GetOrganizationConformancePackDetailedStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetOrganizationConformancePackDetailedStatusRequest"},
      "output":{"shape":"GetOrganizationConformancePackDetailedStatusResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConformancePackException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Returns detailed status for each member account within an organization for a given organization conformance pack.</p>"
    },
    "GetOrganizationCustomRulePolicy":{
      "name":"GetOrganizationCustomRulePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetOrganizationCustomRulePolicyRequest"},
      "output":{"shape":"GetOrganizationCustomRulePolicyResponse"},
      "errors":[
        {"shape":"NoSuchOrganizationConfigRuleException"},
        {"shape":"OrganizationAccessDeniedException"}
      ],
      "documentation":"<p>Returns the policy definition containing the logic for your organization Config Custom Policy rule.</p>"
    },
    "GetResourceConfigHistory":{
      "name":"GetResourceConfigHistory",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetResourceConfigHistoryRequest"},
      "output":{"shape":"GetResourceConfigHistoryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidTimeRangeException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoAvailableConfigurationRecorderException"},
        {"shape":"ResourceNotDiscoveredException"}
      ],
      "documentation":"<important> <p>For accurate reporting on the compliance status, you must record the <code>AWS::Config::ResourceCompliance</code> resource type. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html\">Selecting Which Resources Config Records</a>.</p> </important> <p>Returns a list of <code>ConfigurationItems</code> 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 <code>ConfigurationItems</code> between a minimum of 30 days and a maximum of 7 years (2557 days), Config returns the <code>ConfigurationItems</code> for the specified retention period. </p> <p>The response is paginated. By default, Config returns a limit of 10 configuration items per page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p> <note> <p>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 <code>limit</code>. In such cases, you can make another call, using the <code>nextToken</code>.</p> </note>"
    },
    "GetResourceEvaluationSummary":{
      "name":"GetResourceEvaluationSummary",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetResourceEvaluationSummaryRequest"},
      "output":{"shape":"GetResourceEvaluationSummaryResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>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. </p> <note> <p>To see additional information about the evaluation result, such as which rule flagged a resource as NON_COMPLIANT, use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_GetComplianceDetailsByResource.html\">GetComplianceDetailsByResource</a> API. For more information, see the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceEvaluationSummary.html#API_GetResourceEvaluationSummary_Examples\">Examples</a> section.</p> </note>"
    },
    "GetStoredQuery":{
      "name":"GetStoredQuery",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetStoredQueryRequest"},
      "output":{"shape":"GetStoredQueryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Returns the details of a specific stored query.</p>"
    },
    "ListAggregateDiscoveredResources":{
      "name":"ListAggregateDiscoveredResources",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListAggregateDiscoveredResourcesRequest"},
      "output":{"shape":"ListAggregateDiscoveredResourcesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoSuchConfigurationAggregatorException"}
      ],
      "documentation":"<p>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.</p> <p>For example, if the input consists of accountID 12345678910 and the region is us-east-1 for resource type <code>AWS::EC2::Instance</code> then the API returns all the EC2 instance identifiers of accountID 12345678910 and region us-east-1.</p>"
    },
    "ListConfigurationRecorders":{
      "name":"ListConfigurationRecorders",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListConfigurationRecordersRequest"},
      "output":{"shape":"ListConfigurationRecordersResponse"},
      "errors":[
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Returns a list of configuration recorders depending on the filters you specify.</p>"
    },
    "ListConformancePackComplianceScores":{
      "name":"ListConformancePackComplianceScores",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListConformancePackComplianceScoresRequest"},
      "output":{"shape":"ListConformancePackComplianceScoresResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>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.</p> <note> <p>Conformance packs with no evaluation results will have a compliance score of <code>INSUFFICIENT_DATA</code>.</p> </note>"
    },
    "ListDiscoveredResources":{
      "name":"ListDiscoveredResources",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDiscoveredResourcesRequest"},
      "output":{"shape":"ListDiscoveredResourcesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"},
        {"shape":"NoAvailableConfigurationRecorderException"}
      ],
      "documentation":"<p>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.</p> <note> <p>You can specify either resource IDs or a resource name, but not both, in the same request.</p> </note> <p>The response is paginated. By default, Config lists 100 resource identifiers on each page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p>"
    },
    "ListResourceEvaluations":{
      "name":"ListResourceEvaluations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListResourceEvaluationsRequest"},
      "output":{"shape":"ListResourceEvaluationsResponse"},
      "errors":[
        {"shape":"InvalidNextTokenException"},
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidTimeRangeException"}
      ],
      "documentation":"<p>Returns a list of proactive resource evaluations.</p>"
    },
    "ListStoredQueries":{
      "name":"ListStoredQueries",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListStoredQueriesRequest"},
      "output":{"shape":"ListStoredQueriesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Lists the stored queries for a single Amazon Web Services account and a single Amazon Web Services Region. The default is 100. </p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>List the tags for Config resource.</p>"
    },
    "PutAggregationAuthorization":{
      "name":"PutAggregationAuthorization",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutAggregationAuthorizationRequest"},
      "output":{"shape":"PutAggregationAuthorizationResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Authorizes the aggregator account and region to collect data from the source account and region. </p> <note> <p> <b>Tags are added at creation and cannot be updated with this operation</b> </p> <p> <code>PutAggregationAuthorization</code> is an idempotent API. Subsequent requests won’t create a duplicate resource if one was already created. If a following request has different <code>tags</code> values, Config will ignore these differences and treat it as an idempotent request of the previous. In this case, <code>tags</code> will not be updated, even if they are different.</p> <p>Use <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_TagResource.html\">TagResource</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_UntagResource.html\">UntagResource</a> to update tags after creation.</p> </note>"
    },
    "PutConfigRule":{
      "name":"PutConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutConfigRuleRequest"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"MaxNumberOfConfigRulesExceededException"},
        {"shape":"ResourceInUseException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"NoAvailableConfigurationRecorderException"}
      ],
      "documentation":"<p>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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p> <p>There are two types of rules: <i>Config Managed Rules</i> and <i>Config Custom Rules</i>. You can use <code>PutConfigRule</code> to create both Config Managed Rules and Config Custom Rules.</p> <p>Config Managed Rules are predefined, customizable rules created by Config. For a list of managed rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html\">List of Config Managed Rules</a>. If you are adding an Config managed rule, you must specify the rule's identifier for the <code>SourceIdentifier</code> key.</p> <p>Config Custom Rules are rules that you create from scratch. There are two ways to create Config custom rules: with Lambda functions (<a href=\"https://docs.aws.amazon.com/config/latest/developerguide/gettingstarted-concepts.html#gettingstarted-concepts-function\"> Lambda Developer Guide</a>) and with Guard (<a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>), a policy-as-code language. Config custom rules created with Lambda are called <i>Config Custom Lambda Rules</i> and Config custom rules created with Guard are called <i>Config Custom Policy Rules</i>.</p> <p>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 <code>PutConfigRule</code> 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 <code>SourceIdentifier</code> key. This key is part of the <code>Source</code> object, which is part of the <code>ConfigRule</code> object. </p> <p>For any new Config rule that you add, specify the <code>ConfigRuleName</code> in the <code>ConfigRule</code> object. Do not specify the <code>ConfigRuleArn</code> or the <code>ConfigRuleId</code>. These values are generated by Config for new rules.</p> <p>If you are updating a rule that you added previously, you can specify the rule by <code>ConfigRuleName</code>, <code>ConfigRuleId</code>, or <code>ConfigRuleArn</code> in the <code>ConfigRule</code> data type that you use in this request.</p> <p>For more information about developing and using Config rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html\">Evaluating Resources with Config Rules</a> in the <i>Config Developer Guide</i>.</p> <note> <p> <b>Tags are added at creation and cannot be updated with this operation</b> </p> <p> <code>PutConfigRule</code> is an idempotent API. Subsequent requests won’t create a duplicate resource if one was already created. If a following request has different <code>tags</code> values, Config will ignore these differences and treat it as an idempotent request of the previous. In this case, <code>tags</code> will not be updated, even if they are different.</p> <p>Use <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_TagResource.html\">TagResource</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_UntagResource.html\">UntagResource</a> to update tags after creation.</p> </note>"
    },
    "PutConfigurationAggregator":{
      "name":"PutConfigurationAggregator",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutConfigurationAggregatorRequest"},
      "output":{"shape":"PutConfigurationAggregatorResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRoleException"},
        {"shape":"OrganizationAccessDeniedException"},
        {"shape":"NoAvailableOrganizationException"},
        {"shape":"OrganizationAllFeaturesNotEnabledException"}
      ],
      "documentation":"<p>Creates and updates the configuration aggregator with the selected source accounts and regions. The source account can be individual account(s) or an organization.</p> <p> <code>accountIds</code> that are passed will be replaced with existing accounts. If you want to add additional accounts into the aggregator, call <code>DescribeConfigurationAggregators</code> to get the previous accounts and then append new ones.</p> <note> <p>Config should be enabled in source accounts and regions you want to aggregate.</p> <p>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 <code>EnableAwsServiceAccess</code> API to enable integration between Config and Organizations. If the caller is a registered delegated administrator, Config calls <code>ListDelegatedAdministrators</code> API to verify whether the caller is a valid delegated administrator.</p> <p>To register a delegated administrator, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/set-up-aggregator-cli.html#register-a-delegated-administrator-cli\">Register a Delegated Administrator</a> in the <i>Config developer guide</i>. </p> </note> <note> <p> <b>Tags are added at creation and cannot be updated with this operation</b> </p> <p> <code>PutConfigurationAggregator</code> is an idempotent API. Subsequent requests won’t create a duplicate resource if one was already created. If a following request has different <code>tags</code> values, Config will ignore these differences and treat it as an idempotent request of the previous. In this case, <code>tags</code> will not be updated, even if they are different.</p> <p>Use <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_TagResource.html\">TagResource</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_UntagResource.html\">UntagResource</a> to update tags after creation.</p> </note>"
    },
    "PutConfigurationRecorder":{
      "name":"PutConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutConfigurationRecorderRequest"},
      "errors":[
        {"shape":"MaxNumberOfConfigurationRecordersExceededException"},
        {"shape":"ValidationException"},
        {"shape":"InvalidConfigurationRecorderNameException"},
        {"shape":"InvalidRoleException"},
        {"shape":"InvalidRecordingGroupException"},
        {"shape":"UnmodifiableEntityException"}
      ],
      "documentation":"<p>Creates or updates the customer managed configuration recorder.</p> <p>You can use this operation to create a new customer managed configuration recorder or to update the <code>roleARN</code> and the <code>recordingGroup</code> for an existing customer managed configuration recorder.</p> <p>To start the customer managed configuration recorder and begin recording configuration changes for the resource types you specify, use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_StartConfigurationRecorder.html\">StartConfigurationRecorder</a> operation.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html\"> <b>Working with the Configuration Recorder</b> </a> in the <i>Config Developer Guide</i>.</p> <note> <p> <b>One customer managed configuration recorder per account per Region</b> </p> <p>You can create only one customer managed configuration recorder for each account for each Amazon Web Services Region.</p> <p> <b>Default is to record all supported resource types, excluding the global IAM resource types</b> </p> <p>If you have not specified values for the <code>recordingGroup</code> field, the default for the customer managed configuration recorder is to record all supported resource types, excluding the global IAM resource types: <code>AWS::IAM::Group</code>, <code>AWS::IAM::Policy</code>, <code>AWS::IAM::Role</code>, and <code>AWS::IAM::User</code>.</p> <p> <b>Tags are added at creation and cannot be updated</b> </p> <p> <code>PutConfigurationRecorder</code> 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.</p> <p>Use <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_TagResource.html\">TagResource</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_UntagResource.html\">UntagResource</a> to update tags after creation.</p> </note>"
    },
    "PutConformancePack":{
      "name":"PutConformancePack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutConformancePackRequest"},
      "output":{"shape":"PutConformancePackResponse"},
      "errors":[
        {"shape":"InsufficientPermissionsException"},
        {"shape":"ConformancePackTemplateValidationException"},
        {"shape":"ResourceInUseException"},
        {"shape":"InvalidParameterValueException"},
        {"shape":"MaxNumberOfConformancePacksExceededException"}
      ],
      "documentation":"<p>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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p> <p>This API creates a service-linked role <code>AWSServiceRoleForConfigConforms</code> in your account. The service-linked role is created only when the role does not exist in your account. </p> <note> <p>You must specify only one of the follow parameters: <code>TemplateS3Uri</code>, <code>TemplateBody</code> or <code>TemplateSSMDocumentDetails</code>.</p> </note>"
    },
    "PutDeliveryChannel":{
      "name":"PutDeliveryChannel",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutDeliveryChannelRequest"},
      "errors":[
        {"shape":"MaxNumberOfDeliveryChannelsExceededException"},
        {"shape":"NoAvailableConfigurationRecorderException"},
        {"shape":"InvalidDeliveryChannelNameException"},
        {"shape":"NoSuchBucketException"},
        {"shape":"InvalidS3KeyPrefixException"},
        {"shape":"InvalidS3KmsKeyArnException"},
        {"shape":"InvalidSNSTopicARNException"},
        {"shape":"InsufficientDeliveryPolicyException"}
      ],
      "documentation":"<p>Creates or updates a delivery channel to deliver configuration information and other compliance information.</p> <p>You can use this operation to create a new delivery channel or to update the Amazon S3 bucket and the Amazon SNS topic of an existing delivery channel.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/manage-delivery-channel.html\"> <b>Working with the Delivery Channel</b> </a> in the <i>Config Developer Guide.</i> </p> <note> <p> <b>One delivery channel per account per Region</b> </p> <p>You can have only one delivery channel for each account for each Amazon Web Services Region.</p> </note>"
    },
    "PutEvaluations":{
      "name":"PutEvaluations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutEvaluationsRequest"},
      "output":{"shape":"PutEvaluationsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InvalidResultTokenException"},
        {"shape":"NoSuchConfigRuleException"}
      ],
      "documentation":"<p>Used by an Lambda function to deliver evaluation results to Config. This operation is required in every Lambda function that is invoked by an Config rule.</p>"
    },
    "PutExternalEvaluation":{
      "name":"PutExternalEvaluation",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutExternalEvaluationRequest"},
      "output":{"shape":"PutExternalEvaluationResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>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.</p>"
    },
    "PutOrganizationConfigRule":{
      "name":"PutOrganizationConfigRule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutOrganizationConfigRuleRequest"},
      "output":{"shape":"PutOrganizationConfigRuleResponse"},
      "errors":[
        {"shape":"MaxNumberOfOrganizationConfigRulesExceededException"},
        {"shape":"ResourceInUseException"},
        {"shape":"InvalidParameterValueException"},
        {"shape":"ValidationException"},
        {"shape":"OrganizationAccessDeniedException"},
        {"shape":"NoAvailableOrganizationException"},
        {"shape":"OrganizationAllFeaturesNotEnabledException"},
        {"shape":"InsufficientPermissionsException"}
      ],
      "documentation":"<p>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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p> <p> 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 <code>ListDelegatedAdministrator</code> permissions are added. An organization can have up to 3 delegated administrators.</p> <p>This API enables organization service access through the <code>EnableAWSServiceAccess</code> action and creates a service-linked role <code>AWSServiceRoleForConfigMultiAccountSetup</code> 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 <code>GetRole</code> action.</p> <p>To use this API with delegated administrator, register a delegated administrator by calling Amazon Web Services Organization <code>register-delegated-administrator</code> for <code>config-multiaccountsetup.amazonaws.com</code>. </p> <p>There are two types of rules: <i>Config Managed Rules</i> and <i>Config Custom Rules</i>. You can use <code>PutOrganizationConfigRule</code> to create both Config Managed Rules and Config Custom Rules.</p> <p>Config Managed Rules are predefined, customizable rules created by Config. For a list of managed rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html\">List of Config Managed Rules</a>. If you are adding an Config managed rule, you must specify the rule's identifier for the <code>RuleIdentifier</code> key.</p> <p>Config Custom Rules are rules that you create from scratch. There are two ways to create Config custom rules: with Lambda functions (<a href=\"https://docs.aws.amazon.com/config/latest/developerguide/gettingstarted-concepts.html#gettingstarted-concepts-function\"> Lambda Developer Guide</a>) and with Guard (<a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>), a policy-as-code language. Config custom rules created with Lambda are called <i>Config Custom Lambda Rules</i> and Config custom rules created with Guard are called <i>Config Custom Policy Rules</i>.</p> <p>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 <code>PutOrganizationConfigRule</code> to add a Custom Lambda rule to Config, you must specify the Amazon Resource Name (ARN) that Lambda assigns to the function.</p> <note> <p>Prerequisite: Ensure you call <code>EnableAllFeatures</code> API to enable all features in an organization.</p> <p>Make sure to specify one of either <code>OrganizationCustomPolicyRuleMetadata</code> for Custom Policy rules, <code>OrganizationCustomRuleMetadata</code> for Custom Lambda rules, or <code>OrganizationManagedRuleMetadata</code> for managed rules.</p> </note>"
    },
    "PutOrganizationConformancePack":{
      "name":"PutOrganizationConformancePack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutOrganizationConformancePackRequest"},
      "output":{"shape":"PutOrganizationConformancePackResponse"},
      "errors":[
        {"shape":"MaxNumberOfOrganizationConformancePacksExceededException"},
        {"shape":"ResourceInUseException"},
        {"shape":"ValidationException"},
        {"shape":"OrganizationAccessDeniedException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"OrganizationConformancePackTemplateValidationException"},
        {"shape":"OrganizationAllFeaturesNotEnabledException"},
        {"shape":"NoAvailableOrganizationException"}
      ],
      "documentation":"<p>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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p> <p>Only a management account and a delegated administrator can call this API. When calling this API with a delegated administrator, you must ensure Organizations <code>ListDelegatedAdministrator</code> permissions are added. An organization can have up to 3 delegated administrators.</p> <p>This API enables organization service access for <code>config-multiaccountsetup.amazonaws.com</code> through the <code>EnableAWSServiceAccess</code> action and creates a service-linked role <code>AWSServiceRoleForConfigMultiAccountSetup</code> 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 <code>register-delegate-admin</code> for <code>config-multiaccountsetup.amazonaws.com</code>.</p> <note> <p>Prerequisite: Ensure you call <code>EnableAllFeatures</code> API to enable all features in an organization.</p> <p>You must specify either the <code>TemplateS3Uri</code> or the <code>TemplateBody</code> parameter, but not both. If you provide both Config uses the <code>TemplateS3Uri</code> parameter and ignores the <code>TemplateBody</code> parameter.</p> <p>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.</p> </note>"
    },
    "PutRemediationConfigurations":{
      "name":"PutRemediationConfigurations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutRemediationConfigurationsRequest"},
      "output":{"shape":"PutRemediationConfigurationsResponse"},
      "errors":[
        {"shape":"InsufficientPermissionsException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Adds or updates the remediation configuration with a specific Config rule with the selected target or action. The API creates the <code>RemediationConfiguration</code> 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. </p> <note> <p> <b>Be aware of backward incompatible changes</b> </p> <p>If you make backward incompatible changes to the SSM document, you must call this again to ensure the remediations can run.</p> <p>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.</p> </note> <note> <p> <b>Required fields</b> </p> <p>For manual remediation configuration, you need to provide a value for <code>automationAssumeRole</code> or use a value in the <code>assumeRole</code>field to remediate your resources. The SSM automation document can use either as long as it maps to a valid parameter.</p> <p>However, for automatic remediation configuration, the only valid <code>assumeRole</code> field value is <code>AutomationAssumeRole</code> and you need to provide a value for <code>AutomationAssumeRole</code> to remediate your resources.</p> </note> <note> <p> <b>Auto remediation can be initiated even for compliant resources</b> </p> <p>If you enable auto remediation for a specific Config rule using the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/emAPI_PutRemediationConfigurations.html\">PutRemediationConfigurations</a> API or the Config console, it initiates the remediation process for all non-compliant resources for that specific rule. The auto remediation process relies on the compliance data snapshot which is captured on a periodic basis. Any non-compliant resource that is updated between the snapshot schedule will continue to be remediated based on the last known compliance data snapshot.</p> <p>This means that in some cases auto remediation can be initiated even for compliant resources, since the bootstrap processor uses a database that can have stale evaluation results based on the last known compliance data snapshot.</p> </note>"
    },
    "PutRemediationExceptions":{
      "name":"PutRemediationExceptions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutRemediationExceptionsRequest"},
      "output":{"shape":"PutRemediationExceptionsResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InsufficientPermissionsException"}
      ],
      "documentation":"<p>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. </p> <note> <p> <b>Exceptions block auto remediation</b> </p> <p>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.</p> </note> <note> <p> <b>Manual remediation is recommended when placing an exception</b> </p> <p>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 <code>NON_COMPLIANT</code>. Once the resource has been evaluated as <code>NON_COMPLIANT</code>, 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 <code>NON_COMPLIANT</code> evaluation result can delete resources before the exception is applied.</p> </note> <note> <p> <b>Exceptions can only be performed on non-compliant resources</b> </p> <p>Placing an exception can only be performed on resources that are <code>NON_COMPLIANT</code>. If you use this API for <code>COMPLIANT</code> resources or resources that are <code>NOT_APPLICABLE</code>, a remediation exception will not be generated. For more information on the conditions that initiate the possible Config evaluation results, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/config-concepts.html#aws-config-rules\">Concepts | Config Rules</a> in the <i>Config Developer Guide</i>.</p> </note> <note> <p> <b>Exceptions cannot be placed on service-linked remediation actions</b> </p> <p>You cannot place an exception on service-linked remediation actions, such as remediation actions put by an organizational conformance pack.</p> </note> <note> <p> <b>Auto remediation can be initiated even for compliant resources</b> </p> <p>If you enable auto remediation for a specific Config rule using the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/emAPI_PutRemediationConfigurations.html\">PutRemediationConfigurations</a> API or the Config console, it initiates the remediation process for all non-compliant resources for that specific rule. The auto remediation process relies on the compliance data snapshot which is captured on a periodic basis. Any non-compliant resource that is updated between the snapshot schedule will continue to be remediated based on the last known compliance data snapshot.</p> <p>This means that in some cases auto remediation can be initiated even for compliant resources, since the bootstrap processor uses a database that can have stale evaluation results based on the last known compliance data snapshot.</p> </note>"
    },
    "PutResourceConfig":{
      "name":"PutResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutResourceConfigRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"NoRunningConfigurationRecorderException"},
        {"shape":"MaxActiveResourcesExceededException"}
      ],
      "documentation":"<p>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. </p> <note> <p>The custom resource type must be registered with CloudFormation. This API accepts the configuration item registered with CloudFormation.</p> <p>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. </p> <p>Write-only schema properites are not recorded as part of the published configuration item.</p> </note>"
    },
    "PutRetentionConfiguration":{
      "name":"PutRetentionConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutRetentionConfigurationRequest"},
      "output":{"shape":"PutRetentionConfigurationResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"MaxNumberOfRetentionConfigurationsExceededException"}
      ],
      "documentation":"<p>Creates and updates the retention configuration with details about retention period (number of days) that Config stores your historical information. The API creates the <code>RetentionConfiguration</code> object and names the object as <b>default</b>. When you have a <code>RetentionConfiguration</code> object named <b>default</b>, calling the API modifies the default object. </p> <note> <p>Currently, Config supports only one retention configuration per region in your account.</p> </note>"
    },
    "PutServiceLinkedConfigurationRecorder":{
      "name":"PutServiceLinkedConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutServiceLinkedConfigurationRecorderRequest"},
      "output":{"shape":"PutServiceLinkedConfigurationRecorderResponse"},
      "errors":[
        {"shape":"ConflictException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"LimitExceededException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Creates a service-linked configuration recorder that is linked to a specific Amazon Web Services service based on the <code>ServicePrincipal</code> you specify.</p> <p>The configuration recorder's <code>name</code>, <code>recordingGroup</code>, <code>recordingMode</code>, and <code>recordingScope</code> is set by the service that is linked to the configuration recorder.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html\"> <b>Working with the Configuration Recorder</b> </a> in the <i>Config Developer Guide</i>.</p> <p>This API creates a service-linked role <code>AWSServiceRoleForConfig</code> in your account. The service-linked role is created only when the role does not exist in your account.</p> <note> <p> <b>The recording scope determines if you receive configuration items</b> </p> <p>The recording scope is set by the service that is linked to the configuration recorder and determines whether you receive configuration items (CIs) in the delivery channel. If the recording scope is internal, you will not receive CIs in the delivery channel.</p> <p> <b>Tags are added at creation and cannot be updated with this operation</b> </p> <p>Use <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_TagResource.html\">TagResource</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_UntagResource.html\">UntagResource</a> to update tags after creation.</p> </note>"
    },
    "PutStoredQuery":{
      "name":"PutStoredQuery",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutStoredQueryRequest"},
      "output":{"shape":"PutStoredQueryResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"TooManyTagsException"},
        {"shape":"ResourceConcurrentModificationException"}
      ],
      "documentation":"<p>Saves a new query or updates an existing saved query. The <code>QueryName</code> must be unique for a single Amazon Web Services account and a single Amazon Web Services Region. You can create upto 300 queries in a single Amazon Web Services account and a single Amazon Web Services Region.</p> <note> <p> <b>Tags are added at creation and cannot be updated</b> </p> <p> <code>PutStoredQuery</code> is an idempotent API. Subsequent requests won’t create a duplicate resource if one was already created. If a following request has different <code>tags</code> values, Config will ignore these differences and treat it as an idempotent request of the previous. In this case, <code>tags</code> will not be updated, even if they are different.</p> </note>"
    },
    "SelectAggregateResourceConfig":{
      "name":"SelectAggregateResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"SelectAggregateResourceConfigRequest"},
      "output":{"shape":"SelectAggregateResourceConfigResponse"},
      "errors":[
        {"shape":"InvalidExpressionException"},
        {"shape":"NoSuchConfigurationAggregatorException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>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.</p> <p>For more information about query components, see the <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/query-components.html\"> <b>Query Components</b> </a> section in the <i>Config Developer Guide</i>.</p> <note> <p>If you run an aggregation query (i.e., using <code>GROUP BY</code> or using aggregate functions such as <code>COUNT</code>; e.g., <code>SELECT resourceId, COUNT(*) WHERE resourceType = 'AWS::IAM::Role' GROUP BY resourceId</code>) and do not specify the <code>MaxResults</code> or the <code>Limit</code> query parameters, the default page size is set to 500.</p> <p>If you run a non-aggregation query (i.e., not using <code>GROUP BY</code> or aggregate function; e.g., <code>SELECT * WHERE resourceType = 'AWS::IAM::Role'</code>) and do not specify the <code>MaxResults</code> or the <code>Limit</code> query parameters, the default page size is set to 25.</p> </note>"
    },
    "SelectResourceConfig":{
      "name":"SelectResourceConfig",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"SelectResourceConfigRequest"},
      "output":{"shape":"SelectResourceConfigResponse"},
      "errors":[
        {"shape":"InvalidExpressionException"},
        {"shape":"InvalidLimitException"},
        {"shape":"InvalidNextTokenException"}
      ],
      "documentation":"<p>Accepts a structured query language (SQL) <code>SELECT</code> command, performs the corresponding search, and returns resource configurations matching the properties.</p> <p>For more information about query components, see the <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/query-components.html\"> <b>Query Components</b> </a> section in the <i>Config Developer Guide</i>.</p>"
    },
    "StartConfigRulesEvaluation":{
      "name":"StartConfigRulesEvaluation",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartConfigRulesEvaluationRequest"},
      "output":{"shape":"StartConfigRulesEvaluationResponse"},
      "errors":[
        {"shape":"NoSuchConfigRuleException"},
        {"shape":"LimitExceededException"},
        {"shape":"ResourceInUseException"},
        {"shape":"InvalidParameterValueException"}
      ],
      "documentation":"<p>Runs an on-demand evaluation for the specified Config rules against the last known configuration state of the resources. Use <code>StartConfigRulesEvaluation</code> when you want to test that a rule you updated is working as expected. <code>StartConfigRulesEvaluation</code> does not re-record the latest configuration state for your resources. It re-runs an evaluation against the last known state of your resources. </p> <p>You can specify up to 25 Config rules per request. </p> <p>An existing <code>StartConfigRulesEvaluation</code> call for the specified rules must complete before you can call the API again. If you chose to have Config stream to an Amazon SNS topic, you will receive a <code>ConfigRuleEvaluationStarted</code> notification when the evaluation starts.</p> <note> <p>You don't need to call the <code>StartConfigRulesEvaluation</code> API to run an evaluation for a new rule. When you create a rule, Config evaluates your resources against the rule automatically. </p> </note> <p>The <code>StartConfigRulesEvaluation</code> API is useful if you want to run on-demand evaluations, such as the following example:</p> <ol> <li> <p>You have a custom rule that evaluates your IAM resources every 24 hours.</p> </li> <li> <p>You update your Lambda function to add additional conditions to your rule.</p> </li> <li> <p>Instead of waiting for the next periodic evaluation, you call the <code>StartConfigRulesEvaluation</code> API.</p> </li> <li> <p>Config invokes your Lambda function and evaluates your IAM resources.</p> </li> <li> <p>Your custom rule will still run periodic evaluations every 24 hours.</p> </li> </ol>"
    },
    "StartConfigurationRecorder":{
      "name":"StartConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartConfigurationRecorderRequest"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"NoAvailableDeliveryChannelException"},
        {"shape":"UnmodifiableEntityException"}
      ],
      "documentation":"<p>Starts the customer managed configuration recorder. The customer managed configuration recorder will begin recording configuration changes for the resource types you specify.</p> <p>You must have created a delivery channel to successfully start the customer managed configuration recorder. You can use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutDeliveryChannel.html\">PutDeliveryChannel</a> operation to create a delivery channel.</p>"
    },
    "StartRemediationExecution":{
      "name":"StartRemediationExecution",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartRemediationExecutionRequest"},
      "output":{"shape":"StartRemediationExecutionResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"InsufficientPermissionsException"},
        {"shape":"NoSuchRemediationConfigurationException"}
      ],
      "documentation":"<p>Runs an on-demand remediation for the specified Config rules against the last known remediation configuration. It runs an execution against the current state of your resources. Remediation execution is asynchronous.</p> <p>You can specify up to 100 resource keys per request. An existing StartRemediationExecution call for the specified resource keys must complete before you can call the API again.</p>"
    },
    "StartResourceEvaluation":{
      "name":"StartResourceEvaluation",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartResourceEvaluationRequest"},
      "output":{"shape":"StartResourceEvaluationResponse"},
      "errors":[
        {"shape":"InvalidParameterValueException"},
        {"shape":"IdempotentParameterMismatch"}
      ],
      "documentation":"<p>Runs an on-demand evaluation for the specified resource to determine whether the resource details will comply with configured Config rules. You can also use it for evaluation purposes. Config recommends using an evaluation context. It runs an execution against the resource details with all of the Config rules in your account that match with the specified proactive mode and resource type.</p> <note> <p>Ensure you have the <code>cloudformation:DescribeType</code> role setup to validate the resource type schema.</p> <p>You can find the <a href=\"https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html\">Resource type schema</a> in \"<i>Amazon Web Services public extensions</i>\" within the CloudFormation registry or with the following CLI commmand: <code>aws cloudformation describe-type --type-name \"AWS::S3::Bucket\" --type RESOURCE</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry.html#registry-view\">Managing extensions through the CloudFormation registry</a> and <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html\">Amazon Web Services resource and property types reference</a> in the CloudFormation User Guide.</p> </note>"
    },
    "StopConfigurationRecorder":{
      "name":"StopConfigurationRecorder",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopConfigurationRecorderRequest"},
      "errors":[
        {"shape":"NoSuchConfigurationRecorderException"},
        {"shape":"UnmodifiableEntityException"}
      ],
      "documentation":"<p>Stops the customer managed configuration recorder. The customer managed configuration recorder will stop recording configuration changes for the resource types you have specified.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"TagResourceRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"TooManyTagsException"}
      ],
      "documentation":"<p>Associates the specified tags to a resource with the specified <code>ResourceArn</code>. If existing tags on a resource are not specified in the request parameters, they are not changed. If existing tags are specified, however, then their values will be updated. When a resource is deleted, the tags associated with that resource are deleted as well.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UntagResourceRequest"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Deletes specified tags from a resource.</p>"
    }
  },
  "shapes":{
    "ARN":{"type":"string"},
    "AccountAggregationSource":{
      "type":"structure",
      "required":["AccountIds"],
      "members":{
        "AccountIds":{
          "shape":"AccountAggregationSourceAccountList",
          "documentation":"<p>The 12-digit account ID of the account being aggregated. </p>"
        },
        "AllAwsRegions":{
          "shape":"Boolean",
          "documentation":"<p>If true, aggregate existing Config regions and future regions.</p>"
        },
        "AwsRegions":{
          "shape":"AggregatorRegionList",
          "documentation":"<p>The source regions being aggregated.</p>"
        }
      },
      "documentation":"<p>A collection of accounts and regions.</p>"
    },
    "AccountAggregationSourceAccountList":{
      "type":"list",
      "member":{"shape":"AccountId"},
      "min":1
    },
    "AccountAggregationSourceList":{
      "type":"list",
      "member":{"shape":"AccountAggregationSource"},
      "max":1,
      "min":0
    },
    "AccountId":{
      "type":"string",
      "pattern":"\\d{12}"
    },
    "AggregateComplianceByConfigRule":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "Compliance":{
          "shape":"Compliance",
          "documentation":"<p>Indicates whether an Amazon Web Services resource or Config rule is compliant and provides the number of contributors that affect the compliance.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region from where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>Indicates whether an Config rule is compliant based on account ID, region, compliance, and rule name.</p> <p>A rule is compliant if all of the resources that the rule evaluated comply with it. It is noncompliant if any of these resources do not comply.</p>"
    },
    "AggregateComplianceByConfigRuleList":{
      "type":"list",
      "member":{"shape":"AggregateComplianceByConfigRule"}
    },
    "AggregateComplianceByConformancePack":{
      "type":"structure",
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>The name of the conformance pack.</p>"
        },
        "Compliance":{
          "shape":"AggregateConformancePackCompliance",
          "documentation":"<p>The compliance status of the conformance pack.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit Amazon Web Services account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source Amazon Web Services Region from where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>Provides aggregate compliance of the conformance pack. Indicates whether a conformance pack is compliant based on the name of the conformance pack, account ID, and region.</p> <p>A conformance pack is compliant if all of the rules in a conformance packs are compliant. It is noncompliant if any of the rules are not compliant. The compliance status of a conformance pack is INSUFFICIENT_DATA only if all rules within a conformance pack cannot be evaluated due to insufficient data. If some of the rules in a conformance pack are compliant but the compliance status of other rules in that same conformance pack is INSUFFICIENT_DATA, the conformance pack shows compliant.</p>"
    },
    "AggregateComplianceByConformancePackList":{
      "type":"list",
      "member":{"shape":"AggregateComplianceByConformancePack"}
    },
    "AggregateComplianceCount":{
      "type":"structure",
      "members":{
        "GroupName":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The 12-digit account ID or region based on the GroupByKey value.</p>"
        },
        "ComplianceSummary":{
          "shape":"ComplianceSummary",
          "documentation":"<p>The number of compliant and noncompliant Config rules.</p>"
        }
      },
      "documentation":"<p>Returns the number of compliant and noncompliant rules for one or more accounts and regions in an aggregator.</p>"
    },
    "AggregateComplianceCountList":{
      "type":"list",
      "member":{"shape":"AggregateComplianceCount"}
    },
    "AggregateConformancePackCompliance":{
      "type":"structure",
      "members":{
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>The compliance status of the conformance pack.</p>"
        },
        "CompliantRuleCount":{
          "shape":"Integer",
          "documentation":"<p>The number of compliant Config Rules.</p>"
        },
        "NonCompliantRuleCount":{
          "shape":"Integer",
          "documentation":"<p>The number of noncompliant Config Rules.</p>"
        },
        "TotalRuleCount":{
          "shape":"Integer",
          "documentation":"<p>Total number of compliant rules, noncompliant rules, and the rules that do not have any applicable resources to evaluate upon resulting in insufficient data.</p>"
        }
      },
      "documentation":"<p>Provides the number of compliant and noncompliant rules within a conformance pack. Also provides the compliance status of the conformance pack and the total rule count which includes compliant rules, noncompliant rules, and rules that cannot be evaluated due to insufficient data.</p> <p>A conformance pack is compliant if all of the rules in a conformance packs are compliant. It is noncompliant if any of the rules are not compliant. The compliance status of a conformance pack is INSUFFICIENT_DATA only if all rules within a conformance pack cannot be evaluated due to insufficient data. If some of the rules in a conformance pack are compliant but the compliance status of other rules in that same conformance pack is INSUFFICIENT_DATA, the conformance pack shows compliant.</p>"
    },
    "AggregateConformancePackComplianceCount":{
      "type":"structure",
      "members":{
        "CompliantConformancePackCount":{
          "shape":"Integer",
          "documentation":"<p>Number of compliant conformance packs.</p>"
        },
        "NonCompliantConformancePackCount":{
          "shape":"Integer",
          "documentation":"<p>Number of noncompliant conformance packs.</p>"
        }
      },
      "documentation":"<p>The number of conformance packs that are compliant and noncompliant.</p>"
    },
    "AggregateConformancePackComplianceFilters":{
      "type":"structure",
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>The name of the conformance pack.</p>"
        },
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>The compliance status of the conformance pack.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit Amazon Web Services account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source Amazon Web Services Region from where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>Filters the conformance packs based on an account ID, region, compliance type, and the name of the conformance pack.</p>"
    },
    "AggregateConformancePackComplianceSummary":{
      "type":"structure",
      "members":{
        "ComplianceSummary":{
          "shape":"AggregateConformancePackComplianceCount",
          "documentation":"<p>Returns an <code>AggregateConformancePackComplianceCount</code> object. </p>"
        },
        "GroupName":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Groups the result based on Amazon Web Services account ID or Amazon Web Services Region.</p>"
        }
      },
      "documentation":"<p>Provides a summary of compliance based on either account ID or region. </p>"
    },
    "AggregateConformancePackComplianceSummaryFilters":{
      "type":"structure",
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit Amazon Web Services account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source Amazon Web Services Region from where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>Filters the results based on account ID and region. </p>"
    },
    "AggregateConformancePackComplianceSummaryGroupKey":{
      "type":"string",
      "enum":[
        "ACCOUNT_ID",
        "AWS_REGION"
      ]
    },
    "AggregateConformancePackComplianceSummaryList":{
      "type":"list",
      "member":{"shape":"AggregateConformancePackComplianceSummary"}
    },
    "AggregateEvaluationResult":{
      "type":"structure",
      "members":{
        "EvaluationResultIdentifier":{
          "shape":"EvaluationResultIdentifier",
          "documentation":"<p>Uniquely identifies the evaluation result.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>The resource compliance status.</p> <p>For the <code>AggregationEvaluationResult</code> data type, Config supports only the <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. Config does not support the <code>NOT_APPLICABLE</code> and <code>INSUFFICIENT_DATA</code> value.</p>"
        },
        "ResultRecordedTime":{
          "shape":"Date",
          "documentation":"<p>The time when Config recorded the aggregate evaluation result.</p>"
        },
        "ConfigRuleInvokedTime":{
          "shape":"Date",
          "documentation":"<p>The time when the Config rule evaluated the Amazon Web Services resource.</p>"
        },
        "Annotation":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Supplementary information about how the agrregate evaluation determined the compliance.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region from where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>The details of an Config evaluation for an account ID and region in an aggregator. Provides the Amazon Web Services resource that was evaluated, the compliance of the resource, related time stamps, and supplementary information. </p>"
    },
    "AggregateEvaluationResultList":{
      "type":"list",
      "member":{"shape":"AggregateEvaluationResult"}
    },
    "AggregateResourceIdentifier":{
      "type":"structure",
      "required":[
        "SourceAccountId",
        "SourceRegion",
        "ResourceId",
        "ResourceType"
      ],
      "members":{
        "SourceAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account.</p>"
        },
        "SourceRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region where data is aggregated.</p>"
        },
        "ResourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the Amazon Web Services resource.</p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the Amazon Web Services resource.</p>"
        },
        "ResourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the Amazon Web Services resource.</p>"
        }
      },
      "documentation":"<p>The details that identify a resource that is collected by Config aggregator, including the resource type, ID, (if available) the custom resource name, the source account, and source region.</p>"
    },
    "AggregatedSourceStatus":{
      "type":"structure",
      "members":{
        "SourceId":{
          "shape":"String",
          "documentation":"<p>The source account ID or an organization.</p>"
        },
        "SourceType":{
          "shape":"AggregatedSourceType",
          "documentation":"<p>The source account or an organization.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region authorized to collect aggregated data.</p>"
        },
        "LastUpdateStatus":{
          "shape":"AggregatedSourceStatusType",
          "documentation":"<p>Filters the last updated status type.</p> <ul> <li> <p>Valid value FAILED indicates errors while moving data.</p> </li> <li> <p>Valid value SUCCEEDED indicates the data was successfully moved.</p> </li> <li> <p>Valid value OUTDATED indicates the data is not the most recent.</p> </li> </ul>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The time of the last update.</p>"
        },
        "LastErrorCode":{
          "shape":"String",
          "documentation":"<p>The error code that Config returned when the source account aggregation last failed.</p>"
        },
        "LastErrorMessage":{
          "shape":"String",
          "documentation":"<p>The message indicating that the source account aggregation failed due to an error.</p>"
        }
      },
      "documentation":"<p>The current sync status between the source and the aggregator account.</p>"
    },
    "AggregatedSourceStatusList":{
      "type":"list",
      "member":{"shape":"AggregatedSourceStatus"}
    },
    "AggregatedSourceStatusType":{
      "type":"string",
      "enum":[
        "FAILED",
        "SUCCEEDED",
        "OUTDATED"
      ]
    },
    "AggregatedSourceStatusTypeList":{
      "type":"list",
      "member":{"shape":"AggregatedSourceStatusType"},
      "min":1
    },
    "AggregatedSourceType":{
      "type":"string",
      "enum":[
        "ACCOUNT",
        "ORGANIZATION"
      ]
    },
    "AggregationAuthorization":{
      "type":"structure",
      "members":{
        "AggregationAuthorizationArn":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the aggregation object.</p>"
        },
        "AuthorizedAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the account authorized to aggregate data.</p>"
        },
        "AuthorizedAwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region authorized to collect aggregated data.</p>"
        },
        "CreationTime":{
          "shape":"Date",
          "documentation":"<p>The time stamp when the aggregation authorization was created.</p>"
        }
      },
      "documentation":"<p>An object that represents the authorizations granted to aggregator accounts and regions.</p>"
    },
    "AggregationAuthorizationList":{
      "type":"list",
      "member":{"shape":"AggregationAuthorization"}
    },
    "AggregatorFilterResourceType":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"AggregatorFilterType",
          "documentation":"<p>The type of resource type filter to apply. <code>INCLUDE</code> specifies that the list of resource types in the <code>Value</code> field will be aggregated and no other resource types will be filtered.</p>"
        },
        "Value":{
          "shape":"ResourceTypeValueList",
          "documentation":"<p>Comma-separate list of resource types to filter your aggregated configuration recorders.</p>"
        }
      },
      "documentation":"<p>An object to filter the configuration recorders based on the resource types in scope for recording.</p>"
    },
    "AggregatorFilterServicePrincipal":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"AggregatorFilterType",
          "documentation":"<p>The type of service principal filter to apply. <code>INCLUDE</code> specifies that the list of service principals in the <code>Value</code> field will be aggregated and no other service principals will be filtered.</p>"
        },
        "Value":{
          "shape":"ServicePrincipalValueList",
          "documentation":"<p>Comma-separated list of service principals for the linked Amazon Web Services services to filter your aggregated service-linked configuration recorders.</p>"
        }
      },
      "documentation":"<p>An object to filter service-linked configuration recorders in an aggregator based on the linked Amazon Web Services service.</p>"
    },
    "AggregatorFilterType":{
      "type":"string",
      "enum":["INCLUDE"]
    },
    "AggregatorFilters":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"AggregatorFilterResourceType",
          "documentation":"<p>An object to filter the configuration recorders based on the resource types in scope for recording.</p>"
        },
        "ServicePrincipal":{
          "shape":"AggregatorFilterServicePrincipal",
          "documentation":"<p>An object to filter service-linked configuration recorders in an aggregator based on the linked Amazon Web Services service.</p>"
        }
      },
      "documentation":"<p>An object to filter the data you specify for an aggregator.</p>"
    },
    "AggregatorRegionList":{
      "type":"list",
      "member":{"shape":"String"},
      "min":1
    },
    "AllSupported":{"type":"boolean"},
    "AmazonResourceName":{
      "type":"string",
      "max":1000,
      "min":1
    },
    "Annotation":{
      "type":"string",
      "max":256,
      "min":0
    },
    "AssociateResourceTypesRequest":{
      "type":"structure",
      "required":[
        "ConfigurationRecorderArn",
        "ResourceTypes"
      ],
      "members":{
        "ConfigurationRecorderArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the specified configuration recorder.</p>"
        },
        "ResourceTypes":{
          "shape":"ResourceTypeList",
          "documentation":"<p>The list of resource types you want to add to the recording group of the specified configuration recorder.</p>"
        }
      }
    },
    "AssociateResourceTypesResponse":{
      "type":"structure",
      "required":["ConfigurationRecorder"],
      "members":{
        "ConfigurationRecorder":{"shape":"ConfigurationRecorder"}
      }
    },
    "AutoRemediationAttemptSeconds":{
      "type":"long",
      "box":true,
      "max":2678000,
      "min":1
    },
    "AutoRemediationAttempts":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "AvailabilityZone":{"type":"string"},
    "AwsRegion":{
      "type":"string",
      "max":64,
      "min":1
    },
    "BaseConfigurationItem":{
      "type":"structure",
      "members":{
        "version":{
          "shape":"Version",
          "documentation":"<p>The version number of the resource configuration.</p>"
        },
        "accountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit Amazon Web Services account ID associated with the resource.</p>"
        },
        "configurationItemCaptureTime":{
          "shape":"ConfigurationItemCaptureTime",
          "documentation":"<p>The time when the recording of configuration changes was initiated for the resource.</p>"
        },
        "configurationItemStatus":{
          "shape":"ConfigurationItemStatus",
          "documentation":"<p>The configuration item status. Valid values include:</p> <ul> <li> <p>OK – The resource configuration has been updated.</p> </li> <li> <p>ResourceDiscovered – The resource was newly discovered.</p> </li> <li> <p>ResourceNotRecorded – The resource was discovered, but its configuration was not recorded since the recorder doesn't record resources of this type.</p> </li> <li> <p>ResourceDeleted – The resource was deleted</p> </li> <li> <p>ResourceDeletedNotRecorded – The resource was deleted, but its configuration was not recorded since the recorder doesn't record resources of this type.</p> </li> </ul>"
        },
        "configurationStateId":{
          "shape":"ConfigurationStateId",
          "documentation":"<p>An identifier that indicates the ordering of the configuration items of a resource.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
        },
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of Amazon Web Services resource.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource (for example., sg-xxxxxx).</p>"
        },
        "resourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The custom name of the resource, if available.</p>"
        },
        "awsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region where the resource resides.</p>"
        },
        "availabilityZone":{
          "shape":"AvailabilityZone",
          "documentation":"<p>The Availability Zone associated with the resource.</p>"
        },
        "resourceCreationTime":{
          "shape":"ResourceCreationTime",
          "documentation":"<p>The time stamp when the resource was created.</p>"
        },
        "configuration":{
          "shape":"Configuration",
          "documentation":"<p>The description of the resource configuration.</p>"
        },
        "supplementaryConfiguration":{
          "shape":"SupplementaryConfiguration",
          "documentation":"<p>Configuration attributes that Config returns for certain resource types to supplement the information returned for the configuration parameter.</p>"
        },
        "recordingFrequency":{
          "shape":"RecordingFrequency",
          "documentation":"<p>The recording frequency that Config uses to record configuration changes for the resource.</p>"
        },
        "configurationItemDeliveryTime":{
          "shape":"ConfigurationItemDeliveryTime",
          "documentation":"<p>The time when configuration changes for the resource were delivered.</p> <note> <p>This field is optional and is not guaranteed to be present in a configuration item (CI). If you are using daily recording, this field will be populated. However, if you are using continuous recording, this field will be omitted since the delivery time is instantaneous as the CI is available right away. For more information on daily recording and continuous recording, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-recording-frequency\">Recording Frequency</a> in the <i>Config Developer Guide</i>.</p> </note>"
        }
      },
      "documentation":"<p>The detailed configurations of a specified resource.</p>"
    },
    "BaseConfigurationItems":{
      "type":"list",
      "member":{"shape":"BaseConfigurationItem"}
    },
    "BaseResourceId":{
      "type":"string",
      "max":768,
      "min":1
    },
    "BatchGetAggregateResourceConfigRequest":{
      "type":"structure",
      "required":[
        "ConfigurationAggregatorName",
        "ResourceIdentifiers"
      ],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "ResourceIdentifiers":{
          "shape":"ResourceIdentifiersList",
          "documentation":"<p>A list of aggregate ResourceIdentifiers objects. </p>"
        }
      }
    },
    "BatchGetAggregateResourceConfigResponse":{
      "type":"structure",
      "members":{
        "BaseConfigurationItems":{
          "shape":"BaseConfigurationItems",
          "documentation":"<p>A list that contains the current configuration of one or more resources.</p>"
        },
        "UnprocessedResourceIdentifiers":{
          "shape":"UnprocessedResourceIdentifierList",
          "documentation":"<p>A list of resource identifiers that were not processed with current scope. The list is empty if all the resources are processed.</p>"
        }
      }
    },
    "BatchGetResourceConfigRequest":{
      "type":"structure",
      "required":["resourceKeys"],
      "members":{
        "resourceKeys":{
          "shape":"ResourceKeys",
          "documentation":"<p>A list of resource keys to be processed with the current request. Each element in the list consists of the resource type and resource ID.</p>"
        }
      }
    },
    "BatchGetResourceConfigResponse":{
      "type":"structure",
      "members":{
        "baseConfigurationItems":{
          "shape":"BaseConfigurationItems",
          "documentation":"<p>A list that contains the current configuration of one or more resources.</p>"
        },
        "unprocessedResourceKeys":{
          "shape":"ResourceKeys",
          "documentation":"<p>A list of resource keys that were not processed with the current response. The unprocessesResourceKeys value is in the same form as ResourceKeys, so the value can be directly provided to a subsequent BatchGetResourceConfig operation. If there are no unprocessed resource keys, the response contains an empty unprocessedResourceKeys list. </p>"
        }
      }
    },
    "Boolean":{"type":"boolean"},
    "ChannelName":{
      "type":"string",
      "max":256,
      "min":1
    },
    "ChronologicalOrder":{
      "type":"string",
      "enum":[
        "Reverse",
        "Forward"
      ]
    },
    "ClientToken":{
      "type":"string",
      "max":256,
      "min":64
    },
    "Compliance":{
      "type":"structure",
      "members":{
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>Indicates whether an Amazon Web Services resource or Config rule is compliant.</p> <p>A resource is compliant if it complies with all of the Config rules that evaluate it. A resource is noncompliant if it does not comply with one or more of these rules.</p> <p>A rule is compliant if all of the resources that the rule evaluates comply with it. A rule is noncompliant if any of these resources do not comply.</p> <p>Config returns the <code>INSUFFICIENT_DATA</code> value when no evaluation results are available for the Amazon Web Services resource or Config rule.</p> <p>For the <code>Compliance</code> data type, Config supports only <code>COMPLIANT</code>, <code>NON_COMPLIANT</code>, and <code>INSUFFICIENT_DATA</code> values. Config does not support the <code>NOT_APPLICABLE</code> value for the <code>Compliance</code> data type.</p>"
        },
        "ComplianceContributorCount":{
          "shape":"ComplianceContributorCount",
          "documentation":"<p>The number of Amazon Web Services resources or Config rules that cause a result of <code>NON_COMPLIANT</code>, up to a maximum number.</p>"
        }
      },
      "documentation":"<p>Indicates whether an Amazon Web Services resource or Config rule is compliant and provides the number of contributors that affect the compliance.</p>"
    },
    "ComplianceByConfigRule":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"StringWithCharLimit64",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "Compliance":{
          "shape":"Compliance",
          "documentation":"<p>Indicates whether the Config rule is compliant.</p>"
        }
      },
      "documentation":"<p>Indicates whether an Config rule is compliant. A rule is compliant if all of the resources that the rule evaluated comply with it. A rule is noncompliant if any of these resources do not comply.</p>"
    },
    "ComplianceByConfigRules":{
      "type":"list",
      "member":{"shape":"ComplianceByConfigRule"}
    },
    "ComplianceByResource":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "Compliance":{
          "shape":"Compliance",
          "documentation":"<p>Indicates whether the Amazon Web Services resource complies with all of the Config rules that evaluated it.</p>"
        }
      },
      "documentation":"<p>Indicates whether an Amazon Web Services resource that is evaluated according to one or more Config rules is compliant. A resource is compliant if it complies with all of the rules that evaluate it. A resource is noncompliant if it does not comply with one or more of these rules.</p>"
    },
    "ComplianceByResources":{
      "type":"list",
      "member":{"shape":"ComplianceByResource"}
    },
    "ComplianceContributorCount":{
      "type":"structure",
      "members":{
        "CappedCount":{
          "shape":"Integer",
          "documentation":"<p>The number of Amazon Web Services resources or Config rules responsible for the current compliance of the item.</p>"
        },
        "CapExceeded":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the maximum count is reached.</p>"
        }
      },
      "documentation":"<p>The number of Amazon Web Services resources or Config rules responsible for the current compliance of the item, up to a maximum number.</p>"
    },
    "ComplianceResourceTypes":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit256"},
      "max":100,
      "min":0
    },
    "ComplianceScore":{"type":"string"},
    "ComplianceSummariesByResourceType":{
      "type":"list",
      "member":{"shape":"ComplianceSummaryByResourceType"}
    },
    "ComplianceSummary":{
      "type":"structure",
      "members":{
        "CompliantResourceCount":{
          "shape":"ComplianceContributorCount",
          "documentation":"<p>The number of Config rules or Amazon Web Services resources that are compliant, up to a maximum of 25 for rules and 100 for resources.</p>"
        },
        "NonCompliantResourceCount":{
          "shape":"ComplianceContributorCount",
          "documentation":"<p>The number of Config rules or Amazon Web Services resources that are noncompliant, up to a maximum of 25 for rules and 100 for resources.</p>"
        },
        "ComplianceSummaryTimestamp":{
          "shape":"Date",
          "documentation":"<p>The time that Config created the compliance summary.</p>"
        }
      },
      "documentation":"<p>The number of Config rules or Amazon Web Services resources that are compliant and noncompliant.</p>"
    },
    "ComplianceSummaryByResourceType":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of Amazon Web Services resource.</p>"
        },
        "ComplianceSummary":{
          "shape":"ComplianceSummary",
          "documentation":"<p>The number of Amazon Web Services resources that are compliant or noncompliant, up to a maximum of 100 for each.</p>"
        }
      },
      "documentation":"<p>The number of Amazon Web Services resources of a specific type that are compliant or noncompliant, up to a maximum of 100 for each.</p>"
    },
    "ComplianceType":{
      "type":"string",
      "enum":[
        "COMPLIANT",
        "NON_COMPLIANT",
        "NOT_APPLICABLE",
        "INSUFFICIENT_DATA"
      ]
    },
    "ComplianceTypes":{
      "type":"list",
      "member":{"shape":"ComplianceType"},
      "max":3,
      "min":0
    },
    "ConfigExportDeliveryInfo":{
      "type":"structure",
      "members":{
        "lastStatus":{
          "shape":"DeliveryStatus",
          "documentation":"<p>Status of the last attempted delivery.</p>"
        },
        "lastErrorCode":{
          "shape":"String",
          "documentation":"<p>The error code from the last attempted delivery.</p>"
        },
        "lastErrorMessage":{
          "shape":"String",
          "documentation":"<p>The error message from the last attempted delivery.</p>"
        },
        "lastAttemptTime":{
          "shape":"Date",
          "documentation":"<p>The time of the last attempted delivery.</p>"
        },
        "lastSuccessfulTime":{
          "shape":"Date",
          "documentation":"<p>The time of the last successful delivery.</p>"
        },
        "nextDeliveryTime":{
          "shape":"Date",
          "documentation":"<p>The time that the next delivery occurs.</p>"
        }
      },
      "documentation":"<p>Provides status of the delivery of the snapshot or the configuration history to the specified Amazon S3 bucket. Also provides the status of notifications about the Amazon S3 delivery to the specified Amazon SNS topic.</p>"
    },
    "ConfigRule":{
      "type":"structure",
      "required":["Source"],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name that you assign to the Config rule. The name is required if you are adding a new rule.</p>"
        },
        "ConfigRuleArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The Amazon Resource Name (ARN) of the Config rule.</p>"
        },
        "ConfigRuleId":{
          "shape":"StringWithCharLimit64",
          "documentation":"<p>The ID of the Config rule.</p>"
        },
        "Description":{
          "shape":"EmptiableStringWithCharLimit256",
          "documentation":"<p>The description that you provide for the Config rule.</p>"
        },
        "Scope":{
          "shape":"Scope",
          "documentation":"<p>Defines which resources can trigger an evaluation for the rule. The scope can include one or more resource types, a combination of one resource type and one resource ID, or a combination of a tag key and value. Specify a scope to constrain the resources that can trigger an evaluation for the rule. If you do not specify a scope, evaluations are triggered when any resource in the recording group changes.</p> <note> <p>The scope can be empty. </p> </note>"
        },
        "Source":{
          "shape":"Source",
          "documentation":"<p>Provides the rule owner (<code>Amazon Web Services</code> for managed rules, <code>CUSTOM_POLICY</code> for Custom Policy rules, and <code>CUSTOM_LAMBDA</code> for Custom Lambda rules), the rule identifier, and the notifications that cause the function to evaluate your Amazon Web Services resources.</p>"
        },
        "InputParameters":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>A string, in JSON format, that is passed to the Config rule Lambda function.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The maximum frequency with which Config runs evaluations for a rule. You can specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li> <p>This is for an Config managed rule that is triggered at a periodic frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers the configuration snapshot. For more information, see <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul> <note> <p>By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the <code>MaximumExecutionFrequency</code> parameter.</p> </note>"
        },
        "ConfigRuleState":{
          "shape":"ConfigRuleState",
          "documentation":"<p>Indicates whether the Config rule is active or is currently being deleted by Config. It can also indicate the evaluation status for the Config rule.</p> <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily after you use the <code>StartConfigRulesEvaluation</code> request to evaluate your resources against the Config rule.</p> <p>Config sets the state of the rule to <code>DELETING_RESULTS</code> temporarily after you use the <code>DeleteEvaluationResults</code> request to delete the current evaluation results for the Config rule.</p> <p>Config temporarily sets the state of a rule to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request to delete the rule. After Config deletes the rule, the rule and all of its evaluations are erased and are no longer available.</p>"
        },
        "CreatedBy":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Service principal name of the service that created the rule.</p> <note> <p>The field is populated only if the service-linked rule is created by a service. The field is empty if you create your own rule.</p> </note>"
        },
        "EvaluationModes":{
          "shape":"EvaluationModes",
          "documentation":"<p>The modes the Config rule can be evaluated in. The valid values are distinct objects. By default, the value is Detective evaluation mode only.</p>"
        }
      },
      "documentation":"<p>Config rules evaluate the configuration settings of your Amazon Web Services resources. A rule can run when Config detects a configuration change to an Amazon Web Services resource or at a periodic frequency that you choose (for example, every 24 hours). There are two types of rules: <i>Config Managed Rules</i> and <i>Config Custom Rules</i>.</p> <p>Config Managed Rules are predefined, customizable rules created by Config. For a list of managed rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html\">List of Config Managed Rules</a>.</p> <p>Config Custom Rules are rules that you create from scratch. There are two ways to create Config custom rules: with Lambda functions (<a href=\"https://docs.aws.amazon.com/config/latest/developerguide/gettingstarted-concepts.html#gettingstarted-concepts-function\"> Lambda Developer Guide</a>) and with Guard (<a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>), a policy-as-code language. Config custom rules created with Lambda are called <i>Config Custom Lambda Rules</i> and Config custom rules created with Guard are called <i>Config Custom Policy Rules</i>.</p> <p>For more information about developing and using Config rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html\">Evaluating Resource with Config Rules</a> in the <i>Config Developer Guide</i>.</p> <note> <p>You can use the Amazon Web Services CLI and Amazon Web Services SDKs if you want to create a rule that triggers evaluations for your resources when Config delivers the configuration snapshot. For more information, see <a>ConfigSnapshotDeliveryProperties</a>.</p> </note>"
    },
    "ConfigRuleComplianceFilters":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>The rule compliance status.</p> <p>For the <code>ConfigRuleComplianceFilters</code> data type, Config supports only <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. Config does not support the <code>NOT_APPLICABLE</code> and the <code>INSUFFICIENT_DATA</code> values.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account. </p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region where the data is aggregated. </p>"
        }
      },
      "documentation":"<p>Filters the compliance results based on account ID, region, compliance type, and rule name.</p>"
    },
    "ConfigRuleComplianceSummaryFilters":{
      "type":"structure",
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region where the data is aggregated.</p>"
        }
      },
      "documentation":"<p>Filters the results based on the account IDs and regions.</p>"
    },
    "ConfigRuleComplianceSummaryGroupKey":{
      "type":"string",
      "enum":[
        "ACCOUNT_ID",
        "AWS_REGION"
      ]
    },
    "ConfigRuleEvaluationStatus":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ConfigRuleArn":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the Config rule.</p>"
        },
        "ConfigRuleId":{
          "shape":"String",
          "documentation":"<p>The ID of the Config rule.</p>"
        },
        "LastSuccessfulInvocationTime":{
          "shape":"Date",
          "documentation":"<p>The time that Config last successfully invoked the Config rule to evaluate your Amazon Web Services resources.</p>"
        },
        "LastFailedInvocationTime":{
          "shape":"Date",
          "documentation":"<p>The time that Config last failed to invoke the Config rule to evaluate your Amazon Web Services resources.</p>"
        },
        "LastSuccessfulEvaluationTime":{
          "shape":"Date",
          "documentation":"<p>The time that Config last successfully evaluated your Amazon Web Services resources against the rule.</p>"
        },
        "LastFailedEvaluationTime":{
          "shape":"Date",
          "documentation":"<p>The time that Config last failed to evaluate your Amazon Web Services resources against the rule.</p>"
        },
        "FirstActivatedTime":{
          "shape":"Date",
          "documentation":"<p>The time that you first activated the Config rule.</p>"
        },
        "LastDeactivatedTime":{
          "shape":"Date",
          "documentation":"<p>The time that you last turned off the Config rule.</p>"
        },
        "LastErrorCode":{
          "shape":"String",
          "documentation":"<p>The error code that Config returned when the rule last failed.</p>"
        },
        "LastErrorMessage":{
          "shape":"String",
          "documentation":"<p>The error message that Config returned when the rule last failed.</p>"
        },
        "FirstEvaluationStarted":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether Config has evaluated your resources against the rule at least once.</p> <ul> <li> <p> <code>true</code> - Config has evaluated your Amazon Web Services resources against the rule at least once.</p> </li> <li> <p> <code>false</code> - Config has not finished evaluating your Amazon Web Services resources against the rule at least once.</p> </li> </ul>"
        },
        "LastDebugLogDeliveryStatus":{
          "shape":"String",
          "documentation":"<p>The status of the last attempted delivery of a debug log for your Config Custom Policy rules. Either <code>Successful</code> or <code>Failed</code>.</p>"
        },
        "LastDebugLogDeliveryStatusReason":{
          "shape":"String",
          "documentation":"<p>The reason Config was not able to deliver a debug log. This is for the last failed attempt to retrieve a debug log for your Config Custom Policy rules.</p>"
        },
        "LastDebugLogDeliveryTime":{
          "shape":"Date",
          "documentation":"<p>The time Config last attempted to deliver a debug log for your Config Custom Policy rules.</p>"
        }
      },
      "documentation":"<p>Status information for your Config Managed rules and Config Custom Policy rules. The status includes information such as the last time the rule ran, the last time it failed, and the related error for the last failure.</p> <p>This operation does not return status information about Config Custom Lambda rules.</p>"
    },
    "ConfigRuleEvaluationStatusList":{
      "type":"list",
      "member":{"shape":"ConfigRuleEvaluationStatus"}
    },
    "ConfigRuleName":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":".*\\S.*"
    },
    "ConfigRuleNames":{
      "type":"list",
      "member":{"shape":"ConfigRuleName"},
      "max":25,
      "min":0
    },
    "ConfigRuleState":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "DELETING",
        "DELETING_RESULTS",
        "EVALUATING"
      ]
    },
    "ConfigRules":{
      "type":"list",
      "member":{"shape":"ConfigRule"}
    },
    "ConfigSnapshotDeliveryProperties":{
      "type":"structure",
      "members":{
        "deliveryFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The frequency with which Config delivers configuration snapshots.</p>"
        }
      },
      "documentation":"<p>Provides options for how often Config delivers configuration snapshots to the Amazon S3 bucket in your delivery channel.</p> <p>The frequency for a rule that triggers evaluations for your resources when Config delivers the configuration snapshot is set by one of two values, depending on which is less frequent:</p> <ul> <li> <p>The value for the <code>deliveryFrequency</code> parameter within the delivery channel configuration, which sets how often Config delivers configuration snapshots. This value also sets how often Config invokes evaluations for Config rules.</p> </li> <li> <p>The value for the <code>MaximumExecutionFrequency</code> parameter, which sets the maximum frequency with which Config invokes evaluations for the rule. For more information, see <a>ConfigRule</a>.</p> </li> </ul> <p>If the <code>deliveryFrequency</code> value is less frequent than the <code>MaximumExecutionFrequency</code> value for a rule, Config invokes the rule only as often as the <code>deliveryFrequency</code> value.</p> <ol> <li> <p>For example, you want your rule to run evaluations when Config delivers the configuration snapshot.</p> </li> <li> <p>You specify the <code>MaximumExecutionFrequency</code> value for <code>Six_Hours</code>. </p> </li> <li> <p>You then specify the delivery channel <code>deliveryFrequency</code> value for <code>TwentyFour_Hours</code>.</p> </li> <li> <p>Because the value for <code>deliveryFrequency</code> is less frequent than <code>MaximumExecutionFrequency</code>, Config invokes evaluations for the rule every 24 hours. </p> </li> </ol> <p>You should set the <code>MaximumExecutionFrequency</code> value to be at least as frequent as the <code>deliveryFrequency</code> value. You can view the <code>deliveryFrequency</code> value by using the <code>DescribeDeliveryChannnels</code> action.</p> <p>To update the <code>deliveryFrequency</code> with which Config delivers your configuration snapshots, use the <code>PutDeliveryChannel</code> action.</p>"
    },
    "ConfigStreamDeliveryInfo":{
      "type":"structure",
      "members":{
        "lastStatus":{
          "shape":"DeliveryStatus",
          "documentation":"<p>Status of the last attempted delivery.</p> <p> <b>Note</b> Providing an SNS topic on a <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeliveryChannel.html\">DeliveryChannel</a> for Config is optional. If the SNS delivery is turned off, the last status will be <b>Not_Applicable</b>.</p>"
        },
        "lastErrorCode":{
          "shape":"String",
          "documentation":"<p>The error code from the last attempted delivery.</p>"
        },
        "lastErrorMessage":{
          "shape":"String",
          "documentation":"<p>The error message from the last attempted delivery.</p>"
        },
        "lastStatusChangeTime":{
          "shape":"Date",
          "documentation":"<p>The time from the last status change.</p>"
        }
      },
      "documentation":"<p>A list that contains the status of the delivery of the configuration stream notification to the Amazon SNS topic.</p>"
    },
    "Configuration":{"type":"string"},
    "ConfigurationAggregator":{
      "type":"structure",
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the aggregator.</p>"
        },
        "ConfigurationAggregatorArn":{
          "shape":"ConfigurationAggregatorArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the aggregator.</p>"
        },
        "AccountAggregationSources":{
          "shape":"AccountAggregationSourceList",
          "documentation":"<p>Provides a list of source accounts and regions to be aggregated.</p>"
        },
        "OrganizationAggregationSource":{
          "shape":"OrganizationAggregationSource",
          "documentation":"<p>Provides an organization and list of regions to be aggregated.</p>"
        },
        "CreationTime":{
          "shape":"Date",
          "documentation":"<p>The time stamp when the configuration aggregator was created.</p>"
        },
        "LastUpdatedTime":{
          "shape":"Date",
          "documentation":"<p>The time of the last update.</p>"
        },
        "CreatedBy":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Amazon Web Services service that created the configuration aggregator.</p>"
        },
        "AggregatorFilters":{
          "shape":"AggregatorFilters",
          "documentation":"<p>An object to filter the data you specify for an aggregator.</p>"
        }
      },
      "documentation":"<p>The details about the configuration aggregator, including information about source accounts, regions, and metadata of the aggregator. </p>"
    },
    "ConfigurationAggregatorArn":{
      "type":"string",
      "pattern":"arn:aws[a-z\\-]*:config:[a-z\\-\\d]+:\\d+:config-aggregator/config-aggregator-[a-z\\d]+"
    },
    "ConfigurationAggregatorList":{
      "type":"list",
      "member":{"shape":"ConfigurationAggregator"}
    },
    "ConfigurationAggregatorName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[\\w\\-]+"
    },
    "ConfigurationAggregatorNameList":{
      "type":"list",
      "member":{"shape":"ConfigurationAggregatorName"},
      "max":10,
      "min":0
    },
    "ConfigurationItem":{
      "type":"structure",
      "members":{
        "version":{
          "shape":"Version",
          "documentation":"<p>The version number of the resource configuration.</p>"
        },
        "accountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit Amazon Web Services account ID associated with the resource.</p>"
        },
        "configurationItemCaptureTime":{
          "shape":"ConfigurationItemCaptureTime",
          "documentation":"<p>The time when the recording of configuration changes was initiated for the resource.</p>"
        },
        "configurationItemStatus":{
          "shape":"ConfigurationItemStatus",
          "documentation":"<p>The configuration item status. Valid values include:</p> <ul> <li> <p>OK – The resource configuration has been updated</p> </li> <li> <p>ResourceDiscovered – The resource was newly discovered</p> </li> <li> <p>ResourceNotRecorded – The resource was discovered but its configuration was not recorded since the recorder doesn't record resources of this type</p> </li> <li> <p>ResourceDeleted – The resource was deleted</p> </li> <li> <p>ResourceDeletedNotRecorded – The resource was deleted but its configuration was not recorded since the recorder doesn't record resources of this type</p> </li> </ul>"
        },
        "configurationStateId":{
          "shape":"ConfigurationStateId",
          "documentation":"<p>An identifier that indicates the ordering of the configuration items of a resource.</p>"
        },
        "configurationItemMD5Hash":{
          "shape":"ConfigurationItemMD5Hash",
          "documentation":"<p>Unique MD5 hash that represents the configuration item's state.</p> <p>You can use MD5 hash to compare the states of two or more configuration items that are associated with the same resource.</p>"
        },
        "arn":{
          "shape":"ARN",
          "documentation":"<p>Amazon Resource Name (ARN) associated with the resource.</p>"
        },
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of Amazon Web Services resource.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource (for example, <code>sg-xxxxxx</code>).</p>"
        },
        "resourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The custom name of the resource, if available.</p>"
        },
        "awsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region where the resource resides.</p>"
        },
        "availabilityZone":{
          "shape":"AvailabilityZone",
          "documentation":"<p>The Availability Zone associated with the resource.</p>"
        },
        "resourceCreationTime":{
          "shape":"ResourceCreationTime",
          "documentation":"<p>The time stamp when the resource was created.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>A mapping of key value tags associated with the resource.</p>"
        },
        "relatedEvents":{
          "shape":"RelatedEventList",
          "documentation":"<p>A list of CloudTrail event IDs.</p> <p>A populated field indicates that the current configuration was initiated by the events recorded in the CloudTrail log. For more information about CloudTrail, see <a href=\"https://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_top_level.html\">What Is CloudTrail</a>.</p> <p>An empty field indicates that the current configuration was not initiated by any event. As of Version 1.3, the relatedEvents field is empty. You can access the <a href=\"https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html\">LookupEvents API</a> in the <i>CloudTrail API Reference</i> to retrieve the events for the resource.</p>"
        },
        "relationships":{
          "shape":"RelationshipList",
          "documentation":"<p>A list of related Amazon Web Services resources.</p>"
        },
        "configuration":{
          "shape":"Configuration",
          "documentation":"<p>The description of the resource configuration.</p>"
        },
        "supplementaryConfiguration":{
          "shape":"SupplementaryConfiguration",
          "documentation":"<p>Configuration attributes that Config returns for certain resource types to supplement the information returned for the <code>configuration</code> parameter.</p>"
        },
        "recordingFrequency":{
          "shape":"RecordingFrequency",
          "documentation":"<p>The recording frequency that Config uses to record configuration changes for the resource.</p>"
        },
        "configurationItemDeliveryTime":{
          "shape":"ConfigurationItemDeliveryTime",
          "documentation":"<p>The time when configuration changes for the resource were delivered.</p> <note> <p>This field is optional and is not guaranteed to be present in a configuration item (CI). If you are using daily recording, this field will be populated. However, if you are using continuous recording, this field will be omitted since the delivery time is instantaneous as the CI is available right away. For more information on daily recording and continuous recording, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-recording-frequency\">Recording Frequency</a> in the <i>Config Developer Guide</i>.</p> </note>"
        }
      },
      "documentation":"<p>A list that contains detailed configurations of a specified resource.</p>"
    },
    "ConfigurationItemCaptureTime":{"type":"timestamp"},
    "ConfigurationItemDeliveryTime":{"type":"timestamp"},
    "ConfigurationItemList":{
      "type":"list",
      "member":{"shape":"ConfigurationItem"}
    },
    "ConfigurationItemMD5Hash":{"type":"string"},
    "ConfigurationItemStatus":{
      "type":"string",
      "enum":[
        "OK",
        "ResourceDiscovered",
        "ResourceNotRecorded",
        "ResourceDeleted",
        "ResourceDeletedNotRecorded"
      ]
    },
    "ConfigurationRecorder":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the specified configuration recorder.</p>"
        },
        "name":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the configuration recorder.</p> <p>For customer managed configuration recorders, Config automatically assigns the name of \"default\" when creating a configuration recorder if you do not specify a name at creation time.</p> <p>For service-linked configuration recorders, Config automatically assigns a name that has the prefix \"<code>AWS</code>\" to a new service-linked configuration recorder.</p> <note> <p> <b>Changing the name of a configuration recorder</b> </p> <p>To change the name of the customer managed configuration recorder, you must delete it and create a new customer managed configuration recorder with a new name.</p> <p>You cannot change the name of a service-linked configuration recorder.</p> </note>"
        },
        "roleARN":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role assumed by Config and used by the specified configuration recorder.</p> <note> <p> <b>The server will reject a request without a defined <code>roleARN</code> for the configuration recorder</b> </p> <p>While the API model does not require this field, the server will reject a request without a defined <code>roleARN</code> for the configuration recorder.</p> <p> <b>Policies and compliance results</b> </p> <p> <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html\">IAM policies</a> and <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies.html\">other policies managed in Organizations</a> can impact whether Config has permissions to record configuration changes for your resources. Additionally, rules directly evaluate the configuration of a resource and rules don't take into account these policies when running evaluations. Make sure that the policies in effect align with how you intend to use Config.</p> <p> <b>Keep Minimum Permisions When Reusing an IAM role</b> </p> <p>If you use an Amazon Web Services service that uses Config, such as Security Hub or Control Tower, and an IAM role has already been created, make sure that the IAM role that you use when setting up Config keeps the same minimum permissions as the pre-existing IAM role. You must do this to ensure that the other Amazon Web Services service continues to run as expected. </p> <p>For example, if Control Tower has an IAM role that allows Config to read S3 objects, make sure that the same permissions are granted to the IAM role you use when setting up Config. Otherwise, it may interfere with how Control Tower operates.</p> <p> <b>The service-linked IAM role for Config must be used for service-linked configuration recorders</b> </p> <p>For service-linked configuration recorders, you must use the service-linked IAM role for Config: <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/using-service-linked-roles.html\">AWSServiceRoleForConfig</a>.</p> </note>"
        },
        "recordingGroup":{
          "shape":"RecordingGroup",
          "documentation":"<p>Specifies which resource types are in scope for the configuration recorder to record.</p> <note> <p> <b> High Number of Config Evaluations</b> </p> <p>You might notice increased activity in your account during your initial month recording with Config when compared to subsequent months. During the initial bootstrapping process, Config runs evaluations on all the resources in your account that you have selected for Config to record.</p> <p>If you are running ephemeral workloads, you may see increased activity from Config as it records configuration changes associated with creating and deleting these temporary resources. An <i>ephemeral workload</i> is a temporary use of computing resources that are loaded and run when needed. Examples include Amazon Elastic Compute Cloud (Amazon EC2) Spot Instances, Amazon EMR jobs, and Auto Scaling.</p> <p>If you want to avoid the increased activity from running ephemeral workloads, you can set up the configuration recorder to exclude these resource types from being recorded, or run these types of workloads in a separate account with Config turned off to avoid increased configuration recording and rule evaluations.</p> </note>"
        },
        "recordingMode":{
          "shape":"RecordingMode",
          "documentation":"<p>Specifies the default recording frequency for the configuration recorder. Config supports <i>Continuous recording</i> and <i>Daily recording</i>.</p> <ul> <li> <p>Continuous recording allows you to record configuration changes continuously whenever a change occurs.</p> </li> <li> <p>Daily recording allows you to receive a configuration item (CI) representing the most recent state of your resources over the last 24-hour period, only if it’s different from the previous CI recorded. </p> </li> </ul> <note> <p> <b>Some resource types require continuous recording</b> </p> <p>Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.</p> </note> <p>You can also override the recording frequency for specific resource types.</p>"
        },
        "recordingScope":{
          "shape":"RecordingScope",
          "documentation":"<p>Specifies whether the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigurationItem.html\">ConfigurationItems</a> in scope for the specified configuration recorder are recorded for free (<code>INTERNAL</code>) or if it impacts the costs to your bill (<code>PAID</code>).</p>"
        },
        "servicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>For service-linked configuration recorders, specifies the linked Amazon Web Services service for the configuration recorder.</p>"
        }
      },
      "documentation":"<p>Records configuration changes to the resource types in scope.</p> <p>For more information about the configuration recorder, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html\"> <b>Working with the Configuration Recorder</b> </a> in the <i>Config Developer Guide</i>.</p>"
    },
    "ConfigurationRecorderFilter":{
      "type":"structure",
      "members":{
        "filterName":{
          "shape":"ConfigurationRecorderFilterName",
          "documentation":"<p>The name of the type of filter. Currently, only <code>recordingScope</code> is supported.</p>"
        },
        "filterValue":{
          "shape":"ConfigurationRecorderFilterValues",
          "documentation":"<p>The value of the filter. For <code>recordingScope</code>, valid values include: <code>INTERNAL</code> and <code>PAID</code>.</p> <p> <code>INTERNAL</code> indicates that the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigurationItem.html\">ConfigurationItems</a> in scope for the configuration recorder are recorded for free.</p> <p> <code>PAID</code> indicates that the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigurationItem.html\">ConfigurationItems</a> in scope for the configuration recorder impact the costs to your bill.</p>"
        }
      },
      "documentation":"<p>Filters configuration recorders by recording scope.</p>"
    },
    "ConfigurationRecorderFilterList":{
      "type":"list",
      "member":{"shape":"ConfigurationRecorderFilter"}
    },
    "ConfigurationRecorderFilterName":{
      "type":"string",
      "enum":["recordingScope"]
    },
    "ConfigurationRecorderFilterValue":{
      "type":"string",
      "pattern":"^[0-9a-zA-Z\\\\*\\\\.\\\\\\/\\\\?-]*$"
    },
    "ConfigurationRecorderFilterValues":{
      "type":"list",
      "member":{"shape":"ConfigurationRecorderFilterValue"}
    },
    "ConfigurationRecorderList":{
      "type":"list",
      "member":{"shape":"ConfigurationRecorder"}
    },
    "ConfigurationRecorderNameList":{
      "type":"list",
      "member":{"shape":"RecorderName"}
    },
    "ConfigurationRecorderStatus":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the configuration recorder.</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the configuration recorder.</p>"
        },
        "lastStartTime":{
          "shape":"Date",
          "documentation":"<p>The time the recorder was last started.</p>"
        },
        "lastStopTime":{
          "shape":"Date",
          "documentation":"<p>The time the recorder was last stopped.</p>"
        },
        "recording":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether or not the recorder is currently recording.</p>"
        },
        "lastStatus":{
          "shape":"RecorderStatus",
          "documentation":"<p>The status of the latest recording event processed by the recorder.</p>"
        },
        "lastErrorCode":{
          "shape":"String",
          "documentation":"<p>The latest error code from when the recorder last failed.</p>"
        },
        "lastErrorMessage":{
          "shape":"String",
          "documentation":"<p>The latest error message from when the recorder last failed.</p>"
        },
        "lastStatusChangeTime":{
          "shape":"Date",
          "documentation":"<p>The time of the latest change in status of an recording event processed by the recorder.</p>"
        },
        "servicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>For service-linked configuration recorders, the service principal of the linked Amazon Web Services service.</p>"
        }
      },
      "documentation":"<p>The current status of the configuration recorder.</p> <p>For a detailed status of recording events over time, add your Config events to CloudWatch metrics and use CloudWatch metrics.</p>"
    },
    "ConfigurationRecorderStatusList":{
      "type":"list",
      "member":{"shape":"ConfigurationRecorderStatus"}
    },
    "ConfigurationRecorderSummaries":{
      "type":"list",
      "member":{"shape":"ConfigurationRecorderSummary"}
    },
    "ConfigurationRecorderSummary":{
      "type":"structure",
      "required":[
        "arn",
        "name",
        "recordingScope"
      ],
      "members":{
        "arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the configuration recorder.</p>"
        },
        "name":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the configuration recorder.</p>"
        },
        "servicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>For service-linked configuration recorders, indicates which Amazon Web Services service the configuration recorder is linked to.</p>"
        },
        "recordingScope":{
          "shape":"RecordingScope",
          "documentation":"<p>Indicates whether the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigurationItem.html\">ConfigurationItems</a> in scope for the configuration recorder are recorded for free (<code>INTERNAL</code>) or if you are charged a service fee for recording (<code>PAID</code>).</p>"
        }
      },
      "documentation":"<p>A summary of a configuration recorder, including the <code>arn</code>, <code>name</code>, <code>servicePrincipal</code>, and <code>recordingScope</code>.</p>"
    },
    "ConfigurationStateId":{"type":"string"},
    "ConflictException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutServiceLinkedConfigurationRecorder.html\">PutServiceLinkedConfigurationRecorder</a>, you cannot create a service-linked recorder because a service-linked recorder already exists for the specified service.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteServiceLinkedConfigurationRecorder.html\">DeleteServiceLinkedConfigurationRecorder</a>, you cannot delete the service-linked recorder because it is currently in use by the linked Amazon Web Services service.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteDeliveryChannel.html\">DeleteDeliveryChannel</a>, you cannot delete the specified delivery channel because the customer managed configuration recorder is running. Use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_StopConfigurationRecorder.html\">StopConfigurationRecorder</a> operation to stop the customer managed configuration recorder.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_AssociateResourceTypes.html\">AssociateResourceTypes</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DisassociateResourceTypes.html\">DisassociateResourceTypes</a>, one of the following errors:</p> <ul> <li> <p>For service-linked configuration recorders, the configuration recorder is not in use by the service. No association or dissociation of resource types is permitted.</p> </li> <li> <p>For service-linked configuration recorders, your requested change to the configuration recorder has been denied by its linked Amazon Web Services service.</p> </li> </ul>",
      "exception":true
    },
    "ConformancePackArn":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "ConformancePackComplianceFilters":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ConformancePackConfigRuleNames",
          "documentation":"<p>Filters the results by Config rule names.</p>"
        },
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>Filters the results by compliance.</p> <p>The allowed values are <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. <code>INSUFFICIENT_DATA</code> is not supported.</p>"
        }
      },
      "documentation":"<p>Filters the conformance pack by compliance types and Config rule names.</p>"
    },
    "ConformancePackComplianceResourceIds":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit256"},
      "max":5,
      "min":0
    },
    "ConformancePackComplianceScore":{
      "type":"structure",
      "members":{
        "Score":{
          "shape":"ComplianceScore",
          "documentation":"<p>Compliance score for the conformance pack. Conformance packs with no evaluation results will have a compliance score of <code>INSUFFICIENT_DATA</code>.</p>"
        },
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>The name of the conformance pack.</p>"
        },
        "LastUpdatedTime":{
          "shape":"LastUpdatedTime",
          "documentation":"<p>The time that the conformance pack compliance score was last updated.</p>"
        }
      },
      "documentation":"<p>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.</p>"
    },
    "ConformancePackComplianceScores":{
      "type":"list",
      "member":{"shape":"ConformancePackComplianceScore"}
    },
    "ConformancePackComplianceScoresFilters":{
      "type":"structure",
      "required":["ConformancePackNames"],
      "members":{
        "ConformancePackNames":{
          "shape":"ConformancePackNameFilter",
          "documentation":"<p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>"
        }
      },
      "documentation":"<p>A list of filters to apply to the conformance pack compliance score result set. </p>"
    },
    "ConformancePackComplianceSummary":{
      "type":"structure",
      "required":[
        "ConformancePackName",
        "ConformancePackComplianceStatus"
      ],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>The name of the conformance pack name.</p>"
        },
        "ConformancePackComplianceStatus":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>The status of the conformance pack.</p>"
        }
      },
      "documentation":"<p>Summary includes the name and status of the conformance pack.</p>"
    },
    "ConformancePackComplianceSummaryList":{
      "type":"list",
      "member":{"shape":"ConformancePackComplianceSummary"},
      "max":5,
      "min":1
    },
    "ConformancePackComplianceType":{
      "type":"string",
      "enum":[
        "COMPLIANT",
        "NON_COMPLIANT",
        "INSUFFICIENT_DATA"
      ]
    },
    "ConformancePackConfigRuleNames":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit64"},
      "max":10,
      "min":0
    },
    "ConformancePackDetail":{
      "type":"structure",
      "required":[
        "ConformancePackName",
        "ConformancePackArn",
        "ConformancePackId"
      ],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "ConformancePackArn":{
          "shape":"ConformancePackArn",
          "documentation":"<p>Amazon Resource Name (ARN) of the conformance pack.</p>"
        },
        "ConformancePackId":{
          "shape":"ConformancePackId",
          "documentation":"<p>ID of the conformance pack.</p>"
        },
        "DeliveryS3Bucket":{
          "shape":"DeliveryS3Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket where Config stores conformance pack templates. </p> <note> <p>This field is optional.</p> </note>"
        },
        "DeliveryS3KeyPrefix":{
          "shape":"DeliveryS3KeyPrefix",
          "documentation":"<p>The prefix for the Amazon S3 bucket.</p> <note> <p>This field is optional.</p> </note>"
        },
        "ConformancePackInputParameters":{
          "shape":"ConformancePackInputParameters",
          "documentation":"<p>A list of <code>ConformancePackInputParameter</code> objects.</p>"
        },
        "LastUpdateRequestedTime":{
          "shape":"Date",
          "documentation":"<p>The last time a conformation pack update was requested. </p>"
        },
        "CreatedBy":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The Amazon Web Services service that created the conformance pack.</p>"
        },
        "TemplateSSMDocumentDetails":{
          "shape":"TemplateSSMDocumentDetails",
          "documentation":"<p>An object that contains the name or Amazon Resource Name (ARN) of the Amazon Web Services Systems Manager document (SSM document) and the version of the SSM document that is used to create a conformance pack.</p>"
        }
      },
      "documentation":"<p>Returns details of a conformance pack. A conformance pack is a collection of Config rules and remediation actions that can be easily deployed in an account and a region.</p>"
    },
    "ConformancePackDetailList":{
      "type":"list",
      "member":{"shape":"ConformancePackDetail"},
      "max":25,
      "min":0
    },
    "ConformancePackEvaluationFilters":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ConformancePackConfigRuleNames",
          "documentation":"<p>Filters the results by Config rule names.</p>"
        },
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>Filters the results by compliance.</p> <p>The allowed values are <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. <code>INSUFFICIENT_DATA</code> is not supported.</p>"
        },
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Filters the results by the resource type (for example, <code>\"AWS::EC2::Instance\"</code>). </p>"
        },
        "ResourceIds":{
          "shape":"ConformancePackComplianceResourceIds",
          "documentation":"<p>Filters the results by resource IDs.</p> <note> <p>This is valid only when you provide resource type. If there is no resource type, you will see an error.</p> </note>"
        }
      },
      "documentation":"<p>Filters a conformance pack by Config rule names, compliance types, Amazon Web Services resource types, and resource IDs.</p>"
    },
    "ConformancePackEvaluationResult":{
      "type":"structure",
      "required":[
        "ComplianceType",
        "EvaluationResultIdentifier",
        "ConfigRuleInvokedTime",
        "ResultRecordedTime"
      ],
      "members":{
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>The compliance type. The allowed values are <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. <code>INSUFFICIENT_DATA</code> is not supported.</p>"
        },
        "EvaluationResultIdentifier":{"shape":"EvaluationResultIdentifier"},
        "ConfigRuleInvokedTime":{
          "shape":"Date",
          "documentation":"<p>The time when Config rule evaluated Amazon Web Services resource.</p>"
        },
        "ResultRecordedTime":{
          "shape":"Date",
          "documentation":"<p>The time when Config recorded the evaluation result. </p>"
        },
        "Annotation":{
          "shape":"Annotation",
          "documentation":"<p>Supplementary information about how the evaluation determined the compliance. </p>"
        }
      },
      "documentation":"<p>The details of a conformance pack evaluation. Provides Config rule and Amazon Web Services resource type that was evaluated, the compliance of the conformance pack, related time stamps, and supplementary information. </p>"
    },
    "ConformancePackId":{
      "type":"string",
      "max":1024,
      "min":1
    },
    "ConformancePackInputParameter":{
      "type":"structure",
      "required":[
        "ParameterName",
        "ParameterValue"
      ],
      "members":{
        "ParameterName":{
          "shape":"ParameterName",
          "documentation":"<p>One part of a key-value pair.</p>"
        },
        "ParameterValue":{
          "shape":"ParameterValue",
          "documentation":"<p>Another part of the key-value pair. </p>"
        }
      },
      "documentation":"<p>Input parameters in the form of key-value pairs for the conformance pack, both of which you define. Keys can have a maximum character length of 255 characters, and values can have a maximum length of 4096 characters.</p>"
    },
    "ConformancePackInputParameters":{
      "type":"list",
      "member":{"shape":"ConformancePackInputParameter"},
      "max":60,
      "min":0
    },
    "ConformancePackName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z][-a-zA-Z0-9]*"
    },
    "ConformancePackNameFilter":{
      "type":"list",
      "member":{"shape":"ConformancePackName"},
      "max":25,
      "min":1
    },
    "ConformancePackNamesList":{
      "type":"list",
      "member":{"shape":"ConformancePackName"},
      "max":25,
      "min":0
    },
    "ConformancePackNamesToSummarizeList":{
      "type":"list",
      "member":{"shape":"ConformancePackName"},
      "max":5,
      "min":1
    },
    "ConformancePackRuleCompliance":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>Name of the Config rule.</p>"
        },
        "ComplianceType":{
          "shape":"ConformancePackComplianceType",
          "documentation":"<p>Compliance of the Config rule.</p>"
        },
        "Controls":{
          "shape":"ControlsList",
          "documentation":"<p>Controls for the conformance pack. A control is a process to prevent or detect problems while meeting objectives. A control can align with a specific compliance regime or map to internal controls defined by an organization.</p>"
        }
      },
      "documentation":"<p>Compliance information of one or more Config rules within a conformance pack. You can filter using Config rule names and compliance types.</p>"
    },
    "ConformancePackRuleComplianceList":{
      "type":"list",
      "member":{"shape":"ConformancePackRuleCompliance"},
      "max":1000,
      "min":0
    },
    "ConformancePackRuleEvaluationResultsList":{
      "type":"list",
      "member":{"shape":"ConformancePackEvaluationResult"},
      "max":100,
      "min":0
    },
    "ConformancePackState":{
      "type":"string",
      "enum":[
        "CREATE_IN_PROGRESS",
        "CREATE_COMPLETE",
        "CREATE_FAILED",
        "DELETE_IN_PROGRESS",
        "DELETE_FAILED"
      ]
    },
    "ConformancePackStatusDetail":{
      "type":"structure",
      "required":[
        "ConformancePackName",
        "ConformancePackId",
        "ConformancePackArn",
        "ConformancePackState",
        "StackArn",
        "LastUpdateRequestedTime"
      ],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "ConformancePackId":{
          "shape":"ConformancePackId",
          "documentation":"<p>ID of the conformance pack.</p>"
        },
        "ConformancePackArn":{
          "shape":"ConformancePackArn",
          "documentation":"<p>Amazon Resource Name (ARN) of comformance pack.</p>"
        },
        "ConformancePackState":{
          "shape":"ConformancePackState",
          "documentation":"<p>Indicates deployment status of conformance pack.</p> <p>Config sets the state of the conformance pack to:</p> <ul> <li> <p>CREATE_IN_PROGRESS when a conformance pack creation is in progress for an account.</p> </li> <li> <p>CREATE_COMPLETE when a conformance pack has been successfully created in your account.</p> </li> <li> <p>CREATE_FAILED when a conformance pack creation failed in your account.</p> </li> <li> <p>DELETE_IN_PROGRESS when a conformance pack deletion is in progress. </p> </li> <li> <p>DELETE_FAILED when a conformance pack deletion failed in your account.</p> </li> </ul>"
        },
        "StackArn":{
          "shape":"StackArn",
          "documentation":"<p>Amazon Resource Name (ARN) of CloudFormation stack. </p>"
        },
        "ConformancePackStatusReason":{
          "shape":"ConformancePackStatusReason",
          "documentation":"<p>The reason of conformance pack creation failure.</p>"
        },
        "LastUpdateRequestedTime":{
          "shape":"Date",
          "documentation":"<p>Last time when conformation pack creation and update was requested.</p>"
        },
        "LastUpdateCompletedTime":{
          "shape":"Date",
          "documentation":"<p>Last time when conformation pack creation and update was successful.</p>"
        }
      },
      "documentation":"<p>Status details of a conformance pack.</p>"
    },
    "ConformancePackStatusDetailsList":{
      "type":"list",
      "member":{"shape":"ConformancePackStatusDetail"},
      "max":25,
      "min":0
    },
    "ConformancePackStatusReason":{
      "type":"string",
      "max":2000,
      "min":0
    },
    "ConformancePackTemplateValidationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a template that is not valid or supported.</p>",
      "exception":true
    },
    "ControlsList":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit128"},
      "max":20,
      "min":0
    },
    "CosmosPageLimit":{
      "type":"integer",
      "max":100,
      "min":0
    },
    "CustomPolicyDetails":{
      "type":"structure",
      "required":[
        "PolicyRuntime",
        "PolicyText"
      ],
      "members":{
        "PolicyRuntime":{
          "shape":"PolicyRuntime",
          "documentation":"<p>The runtime system for your Config Custom Policy rule. Guard is a policy-as-code language that allows you to write policies that are enforced by Config Custom Policy rules. For more information about Guard, see the <a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>.</p>"
        },
        "PolicyText":{
          "shape":"PolicyText",
          "documentation":"<p>The policy definition containing the logic for your Config Custom Policy rule.</p>"
        },
        "EnableDebugLogDelivery":{
          "shape":"Boolean",
          "documentation":"<p>The boolean expression for enabling debug logging for your Config Custom Policy rule. The default value is <code>false</code>.</p>"
        }
      },
      "documentation":"<p>Provides the runtime system, policy definition, and whether debug logging enabled. You can specify the following CustomPolicyDetails parameter values only for Config Custom Policy rules.</p>"
    },
    "Date":{"type":"timestamp"},
    "DebugLogDeliveryAccounts":{
      "type":"list",
      "member":{"shape":"AccountId"},
      "max":1000,
      "min":0
    },
    "DeleteAggregationAuthorizationRequest":{
      "type":"structure",
      "required":[
        "AuthorizedAccountId",
        "AuthorizedAwsRegion"
      ],
      "members":{
        "AuthorizedAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the account authorized to aggregate data.</p>"
        },
        "AuthorizedAwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region authorized to collect aggregated data.</p>"
        }
      }
    },
    "DeleteConfigRuleRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule that you want to delete.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DeleteConfigurationAggregatorRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        }
      }
    },
    "DeleteConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ConfigurationRecorderName"],
      "members":{
        "ConfigurationRecorderName":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the customer managed configuration recorder that you want to delete. You can retrieve the name of your configuration recorders by using the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorders.html\">DescribeConfigurationRecorders</a> operation.</p>"
        }
      },
      "documentation":"<p>The request object for the <code>DeleteConfigurationRecorder</code> operation.</p>"
    },
    "DeleteConformancePackRequest":{
      "type":"structure",
      "required":["ConformancePackName"],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack you want to delete.</p>"
        }
      }
    },
    "DeleteDeliveryChannelRequest":{
      "type":"structure",
      "required":["DeliveryChannelName"],
      "members":{
        "DeliveryChannelName":{
          "shape":"ChannelName",
          "documentation":"<p>The name of the delivery channel that you want to delete.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DeleteDeliveryChannel</a> action. The action accepts the following data, in JSON format. </p>"
    },
    "DeleteEvaluationResultsRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"StringWithCharLimit64",
          "documentation":"<p>The name of the Config rule for which you want to delete the evaluation results.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DeleteEvaluationResultsResponse":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The output when you delete the evaluation results for the specified Config rule.</p>"
    },
    "DeleteOrganizationConfigRuleRequest":{
      "type":"structure",
      "required":["OrganizationConfigRuleName"],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name of organization Config rule that you want to delete.</p>"
        }
      }
    },
    "DeleteOrganizationConformancePackRequest":{
      "type":"structure",
      "required":["OrganizationConformancePackName"],
      "members":{
        "OrganizationConformancePackName":{
          "shape":"OrganizationConformancePackName",
          "documentation":"<p>The name of organization conformance pack that you want to delete.</p>"
        }
      }
    },
    "DeletePendingAggregationRequestRequest":{
      "type":"structure",
      "required":[
        "RequesterAccountId",
        "RequesterAwsRegion"
      ],
      "members":{
        "RequesterAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the account requesting to aggregate data.</p>"
        },
        "RequesterAwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region requesting to aggregate data.</p>"
        }
      }
    },
    "DeleteRemediationConfigurationRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule for which you want to delete remediation configuration.</p>"
        },
        "ResourceType":{
          "shape":"String",
          "documentation":"<p>The type of a resource.</p>"
        }
      }
    },
    "DeleteRemediationConfigurationResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteRemediationExceptionsRequest":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "ResourceKeys"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule for which you want to delete remediation exception configuration.</p>"
        },
        "ResourceKeys":{
          "shape":"RemediationExceptionResourceKeys",
          "documentation":"<p>An exception list of resource exception keys to be processed with the current request. Config adds exception for each resource key. For example, Config adds 3 exceptions for 3 resource keys. </p>"
        }
      }
    },
    "DeleteRemediationExceptionsResponse":{
      "type":"structure",
      "members":{
        "FailedBatches":{
          "shape":"FailedDeleteRemediationExceptionsBatches",
          "documentation":"<p>Returns a list of failed delete remediation exceptions batch objects. Each object in the batch consists of a list of failed items and failure messages.</p>"
        }
      }
    },
    "DeleteResourceConfigRequest":{
      "type":"structure",
      "required":[
        "ResourceType",
        "ResourceId"
      ],
      "members":{
        "ResourceType":{
          "shape":"ResourceTypeString",
          "documentation":"<p>The type of the resource.</p>"
        },
        "ResourceId":{
          "shape":"ResourceId",
          "documentation":"<p>Unique identifier of the resource.</p>"
        }
      }
    },
    "DeleteRetentionConfigurationRequest":{
      "type":"structure",
      "required":["RetentionConfigurationName"],
      "members":{
        "RetentionConfigurationName":{
          "shape":"RetentionConfigurationName",
          "documentation":"<p>The name of the retention configuration to delete.</p>"
        }
      }
    },
    "DeleteServiceLinkedConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ServicePrincipal"],
      "members":{
        "ServicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>The service principal of the Amazon Web Services service for the service-linked configuration recorder that you want to delete.</p>"
        }
      }
    },
    "DeleteServiceLinkedConfigurationRecorderResponse":{
      "type":"structure",
      "required":[
        "Arn",
        "Name"
      ],
      "members":{
        "Arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the specified configuration recorder.</p>"
        },
        "Name":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the specified configuration recorder.</p>"
        }
      }
    },
    "DeleteStoredQueryRequest":{
      "type":"structure",
      "required":["QueryName"],
      "members":{
        "QueryName":{
          "shape":"QueryName",
          "documentation":"<p>The name of the query that you want to delete.</p>"
        }
      }
    },
    "DeleteStoredQueryResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeliverConfigSnapshotRequest":{
      "type":"structure",
      "required":["deliveryChannelName"],
      "members":{
        "deliveryChannelName":{
          "shape":"ChannelName",
          "documentation":"<p>The name of the delivery channel through which the snapshot is delivered.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DeliverConfigSnapshot</a> action.</p>"
    },
    "DeliverConfigSnapshotResponse":{
      "type":"structure",
      "members":{
        "configSnapshotId":{
          "shape":"String",
          "documentation":"<p>The ID of the snapshot that is being created.</p>"
        }
      },
      "documentation":"<p>The output for the <a>DeliverConfigSnapshot</a> action, in JSON format.</p>"
    },
    "DeliveryChannel":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ChannelName",
          "documentation":"<p>The name of the delivery channel. By default, Config assigns the name \"default\" when creating the delivery channel. To change the delivery channel name, you must use the DeleteDeliveryChannel action to delete your current delivery channel, and then you must use the PutDeliveryChannel command to create a delivery channel that has the desired name.</p>"
        },
        "s3BucketName":{
          "shape":"String",
          "documentation":"<p>The name of the Amazon S3 bucket to which Config delivers configuration snapshots and configuration history files.</p> <p>If you specify a bucket that belongs to another Amazon Web Services account, that bucket must have policies that grant access permissions to Config. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-policy.html\">Permissions for the Amazon S3 Bucket</a> in the <i>Config Developer Guide</i>.</p>"
        },
        "s3KeyPrefix":{
          "shape":"String",
          "documentation":"<p>The prefix for the specified Amazon S3 bucket.</p>"
        },
        "s3KmsKeyArn":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the Key Management Service (KMS ) KMS key (KMS key) used to encrypt objects delivered by Config. Must belong to the same Region as the destination S3 bucket.</p>"
        },
        "snsTopicARN":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Config sends notifications about configuration changes.</p> <p>If you choose a topic from another account, the topic must have policies that grant access permissions to Config. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/sns-topic-policy.html\">Permissions for the Amazon SNS Topic</a> in the <i>Config Developer Guide</i>.</p>"
        },
        "configSnapshotDeliveryProperties":{
          "shape":"ConfigSnapshotDeliveryProperties",
          "documentation":"<p>The options for how often Config delivers configuration snapshots to the Amazon S3 bucket.</p>"
        }
      },
      "documentation":"<p>The channel through which Config delivers notifications and updated configuration states.</p>"
    },
    "DeliveryChannelList":{
      "type":"list",
      "member":{"shape":"DeliveryChannel"}
    },
    "DeliveryChannelNameList":{
      "type":"list",
      "member":{"shape":"ChannelName"}
    },
    "DeliveryChannelStatus":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the delivery channel.</p>"
        },
        "configSnapshotDeliveryInfo":{
          "shape":"ConfigExportDeliveryInfo",
          "documentation":"<p>A list containing the status of the delivery of the snapshot to the specified Amazon S3 bucket.</p>"
        },
        "configHistoryDeliveryInfo":{
          "shape":"ConfigExportDeliveryInfo",
          "documentation":"<p>A list that contains the status of the delivery of the configuration history to the specified Amazon S3 bucket.</p>"
        },
        "configStreamDeliveryInfo":{
          "shape":"ConfigStreamDeliveryInfo",
          "documentation":"<p>A list containing the status of the delivery of the configuration stream notification to the specified Amazon SNS topic.</p>"
        }
      },
      "documentation":"<p>The status of a specified delivery channel.</p> <p>Valid values: <code>Success</code> | <code>Failure</code> </p>"
    },
    "DeliveryChannelStatusList":{
      "type":"list",
      "member":{"shape":"DeliveryChannelStatus"}
    },
    "DeliveryS3Bucket":{
      "type":"string",
      "max":63,
      "min":0
    },
    "DeliveryS3KeyPrefix":{
      "type":"string",
      "max":1024,
      "min":0
    },
    "DeliveryStatus":{
      "type":"string",
      "enum":[
        "Success",
        "Failure",
        "Not_Applicable"
      ]
    },
    "DescribeAggregateComplianceByConfigRulesRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Filters":{
          "shape":"ConfigRuleComplianceFilters",
          "documentation":"<p>Filters the results by ConfigRuleComplianceFilters object. </p>"
        },
        "Limit":{
          "shape":"GroupByAPILimit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeAggregateComplianceByConfigRulesResponse":{
      "type":"structure",
      "members":{
        "AggregateComplianceByConfigRules":{
          "shape":"AggregateComplianceByConfigRuleList",
          "documentation":"<p>Returns a list of AggregateComplianceByConfigRule object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeAggregateComplianceByConformancePacksRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Filters":{
          "shape":"AggregateConformancePackComplianceFilters",
          "documentation":"<p>Filters the result by <code>AggregateConformancePackComplianceFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of conformance packs compliance details returned on each page. The default is maximum. If you specify 0, Config uses the default. </p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeAggregateComplianceByConformancePacksResponse":{
      "type":"structure",
      "members":{
        "AggregateComplianceByConformancePacks":{
          "shape":"AggregateComplianceByConformancePackList",
          "documentation":"<p>Returns the <code>AggregateComplianceByConformancePack</code> object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeAggregationAuthorizationsRequest":{
      "type":"structure",
      "members":{
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of AggregationAuthorizations returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeAggregationAuthorizationsResponse":{
      "type":"structure",
      "members":{
        "AggregationAuthorizations":{
          "shape":"AggregationAuthorizationList",
          "documentation":"<p>Returns a list of authorizations granted to various aggregator accounts and regions.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeComplianceByConfigRuleRequest":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ConfigRuleNames",
          "documentation":"<p>Specify one or more Config rule names to filter the results by rule.</p>"
        },
        "ComplianceTypes":{
          "shape":"ComplianceTypes",
          "documentation":"<p>Filters the results by compliance.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeComplianceByConfigRuleResponse":{
      "type":"structure",
      "members":{
        "ComplianceByConfigRules":{
          "shape":"ComplianceByConfigRules",
          "documentation":"<p>Indicates whether each of the specified Config rules is compliant.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeComplianceByResourceRequest":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The types of Amazon Web Services resources for which you want compliance information (for example, <code>AWS::EC2::Instance</code>). For this operation, you can specify that the resource type is an Amazon Web Services account by specifying <code>AWS::::Account</code>.</p>"
        },
        "ResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the Amazon Web Services resource for which you want compliance information. You can specify only one resource ID. If you specify a resource ID, you must also specify a type for <code>ResourceType</code>.</p>"
        },
        "ComplianceTypes":{
          "shape":"ComplianceTypes",
          "documentation":"<p>Filters the results by compliance.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeComplianceByResourceResponse":{
      "type":"structure",
      "members":{
        "ComplianceByResources":{
          "shape":"ComplianceByResources",
          "documentation":"<p>Indicates whether the specified Amazon Web Services resource complies with all of the Config rules that evaluate it.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeConfigRuleEvaluationStatusRequest":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ConfigRuleNames",
          "documentation":"<p>The name of the Config managed rules for which you want status information. If you do not specify any names, Config returns status information for all Config managed rules that you use.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        },
        "Limit":{
          "shape":"RuleLimit",
          "documentation":"<p>The number of rule evaluation results that you want returned.</p> <p>This parameter is required if the rule limit for your account is more than the default of 1000 rules.</p> <p>For information about requesting a rule limit increase, see <a href=\"http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_config\">Config Limits</a> in the <i>Amazon Web Services General Reference Guide</i>.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeConfigRuleEvaluationStatusResponse":{
      "type":"structure",
      "members":{
        "ConfigRulesEvaluationStatus":{
          "shape":"ConfigRuleEvaluationStatusList",
          "documentation":"<p>Status information about your Config managed rules.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeConfigRulesFilters":{
      "type":"structure",
      "members":{
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>The mode of an evaluation. The valid values are Detective or Proactive.</p>"
        }
      },
      "documentation":"<p>Returns a filtered list of Detective or Proactive Config rules. By default, if the filter is not defined, this API returns an unfiltered list. For more information on Detective or Proactive Config rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config-rules.html\"> <b>Evaluation Mode</b> </a> in the <i>Config Developer Guide</i>.</p>"
    },
    "DescribeConfigRulesRequest":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ConfigRuleNames",
          "documentation":"<p>The names of the Config rules for which you want details. If you do not specify any names, Config returns details for all your rules.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        },
        "Filters":{
          "shape":"DescribeConfigRulesFilters",
          "documentation":"<p>Returns a list of Detective or Proactive Config rules. By default, this API returns an unfiltered list. For more information on Detective or Proactive Config rules, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config-rules.html\"> <b>Evaluation Mode</b> </a> in the <i>Config Developer Guide</i>.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeConfigRulesResponse":{
      "type":"structure",
      "members":{
        "ConfigRules":{
          "shape":"ConfigRules",
          "documentation":"<p>The details about your Config rules.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "DescribeConfigurationAggregatorSourcesStatusRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "UpdateStatus":{
          "shape":"AggregatedSourceStatusTypeList",
          "documentation":"<p>Filters the status type.</p> <ul> <li> <p>Valid value FAILED indicates errors while moving data.</p> </li> <li> <p>Valid value SUCCEEDED indicates the data was successfully moved.</p> </li> <li> <p>Valid value OUTDATED indicates the data is not the most recent.</p> </li> </ul>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of AggregatorSourceStatus returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        }
      }
    },
    "DescribeConfigurationAggregatorSourcesStatusResponse":{
      "type":"structure",
      "members":{
        "AggregatedSourceStatusList":{
          "shape":"AggregatedSourceStatusList",
          "documentation":"<p>Returns an AggregatedSourceStatus object. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConfigurationAggregatorsRequest":{
      "type":"structure",
      "members":{
        "ConfigurationAggregatorNames":{
          "shape":"ConfigurationAggregatorNameList",
          "documentation":"<p>The name of the configuration aggregators.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of configuration aggregators returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        }
      }
    },
    "DescribeConfigurationAggregatorsResponse":{
      "type":"structure",
      "members":{
        "ConfigurationAggregators":{
          "shape":"ConfigurationAggregatorList",
          "documentation":"<p>Returns a ConfigurationAggregators object.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConfigurationRecorderStatusRequest":{
      "type":"structure",
      "members":{
        "ConfigurationRecorderNames":{
          "shape":"ConfigurationRecorderNameList",
          "documentation":"<p>The name of the configuration recorder. If the name is not specified, the opertation returns the status for the customer managed configuration recorder configured for the account, if applicable.</p> <note> <p>When making a request to this operation, you can only specify one configuration recorder.</p> </note>"
        },
        "ServicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>For service-linked configuration recorders, you can use the service principal of the linked Amazon Web Services service to specify the configuration recorder.</p>"
        },
        "Arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the configuration recorder that you want to specify.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DescribeConfigurationRecorderStatus</a> action.</p>"
    },
    "DescribeConfigurationRecorderStatusResponse":{
      "type":"structure",
      "members":{
        "ConfigurationRecordersStatus":{
          "shape":"ConfigurationRecorderStatusList",
          "documentation":"<p>A list that contains status of the specified recorders.</p>"
        }
      },
      "documentation":"<p>The output for the <a>DescribeConfigurationRecorderStatus</a> action, in JSON format.</p>"
    },
    "DescribeConfigurationRecordersRequest":{
      "type":"structure",
      "members":{
        "ConfigurationRecorderNames":{
          "shape":"ConfigurationRecorderNameList",
          "documentation":"<p>A list of names of the configuration recorders that you want to specify.</p>"
        },
        "ServicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>For service-linked configuration recorders, you can use the service principal of the linked Amazon Web Services service to specify the configuration recorder.</p>"
        },
        "Arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the configuration recorder that you want to specify.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DescribeConfigurationRecorders</a> action.</p>"
    },
    "DescribeConfigurationRecordersResponse":{
      "type":"structure",
      "members":{
        "ConfigurationRecorders":{
          "shape":"ConfigurationRecorderList",
          "documentation":"<p>A list that contains the descriptions of the specified configuration recorders.</p>"
        }
      },
      "documentation":"<p>The output for the <a>DescribeConfigurationRecorders</a> action.</p>"
    },
    "DescribeConformancePackComplianceLimit":{
      "type":"integer",
      "max":1000,
      "min":0
    },
    "DescribeConformancePackComplianceRequest":{
      "type":"structure",
      "required":["ConformancePackName"],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "Filters":{
          "shape":"ConformancePackComplianceFilters",
          "documentation":"<p>A <code>ConformancePackComplianceFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"DescribeConformancePackComplianceLimit",
          "documentation":"<p>The maximum number of Config rules within a conformance pack are returned on each page.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConformancePackComplianceResponse":{
      "type":"structure",
      "required":[
        "ConformancePackName",
        "ConformancePackRuleComplianceList"
      ],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "ConformancePackRuleComplianceList":{
          "shape":"ConformancePackRuleComplianceList",
          "documentation":"<p>Returns a list of <code>ConformancePackRuleCompliance</code> objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConformancePackStatusRequest":{
      "type":"structure",
      "members":{
        "ConformancePackNames":{
          "shape":"ConformancePackNamesList",
          "documentation":"<p>Comma-separated list of conformance pack names.</p>"
        },
        "Limit":{
          "shape":"PageSizeLimit",
          "documentation":"<p>The maximum number of conformance packs status returned on each page.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConformancePackStatusResponse":{
      "type":"structure",
      "members":{
        "ConformancePackStatusDetails":{
          "shape":"ConformancePackStatusDetailsList",
          "documentation":"<p>A list of <code>ConformancePackStatusDetail</code> objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConformancePacksRequest":{
      "type":"structure",
      "members":{
        "ConformancePackNames":{
          "shape":"ConformancePackNamesList",
          "documentation":"<p>Comma-separated list of conformance pack names for which you want details. If you do not specify any names, Config returns details for all your conformance packs. </p>"
        },
        "Limit":{
          "shape":"PageSizeLimit",
          "documentation":"<p>The maximum number of conformance packs returned on each page.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeConformancePacksResponse":{
      "type":"structure",
      "members":{
        "ConformancePackDetails":{
          "shape":"ConformancePackDetailList",
          "documentation":"<p>Returns a list of <code>ConformancePackDetail</code> objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeDeliveryChannelStatusRequest":{
      "type":"structure",
      "members":{
        "DeliveryChannelNames":{
          "shape":"DeliveryChannelNameList",
          "documentation":"<p>A list of delivery channel names.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DeliveryChannelStatus</a> action.</p>"
    },
    "DescribeDeliveryChannelStatusResponse":{
      "type":"structure",
      "members":{
        "DeliveryChannelsStatus":{
          "shape":"DeliveryChannelStatusList",
          "documentation":"<p>A list that contains the status of a specified delivery channel.</p>"
        }
      },
      "documentation":"<p>The output for the <a>DescribeDeliveryChannelStatus</a> action.</p>"
    },
    "DescribeDeliveryChannelsRequest":{
      "type":"structure",
      "members":{
        "DeliveryChannelNames":{
          "shape":"DeliveryChannelNameList",
          "documentation":"<p>A list of delivery channel names.</p>"
        }
      },
      "documentation":"<p>The input for the <a>DescribeDeliveryChannels</a> action.</p>"
    },
    "DescribeDeliveryChannelsResponse":{
      "type":"structure",
      "members":{
        "DeliveryChannels":{
          "shape":"DeliveryChannelList",
          "documentation":"<p>A list that contains the descriptions of the specified delivery channel.</p>"
        }
      },
      "documentation":"<p>The output for the <a>DescribeDeliveryChannels</a> action.</p>"
    },
    "DescribeOrganizationConfigRuleStatusesRequest":{
      "type":"structure",
      "members":{
        "OrganizationConfigRuleNames":{
          "shape":"OrganizationConfigRuleNames",
          "documentation":"<p>The names of organization Config rules for which you want status details. If you do not specify any names, Config returns details for all your organization Config rules.</p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of <code>OrganizationConfigRuleStatuses</code> returned on each page. If you do no specify a number, Config uses the default. The default is 100.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConfigRuleStatusesResponse":{
      "type":"structure",
      "members":{
        "OrganizationConfigRuleStatuses":{
          "shape":"OrganizationConfigRuleStatuses",
          "documentation":"<p>A list of <code>OrganizationConfigRuleStatus</code> objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConfigRulesRequest":{
      "type":"structure",
      "members":{
        "OrganizationConfigRuleNames":{
          "shape":"OrganizationConfigRuleNames",
          "documentation":"<p>The names of organization Config rules for which you want details. If you do not specify any names, Config returns details for all your organization Config rules.</p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of organization Config rules returned on each page. If you do no specify a number, Config uses the default. The default is 100.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConfigRulesResponse":{
      "type":"structure",
      "members":{
        "OrganizationConfigRules":{
          "shape":"OrganizationConfigRules",
          "documentation":"<p>Returns a list of <code>OrganizationConfigRule</code> objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConformancePackStatusesRequest":{
      "type":"structure",
      "members":{
        "OrganizationConformancePackNames":{
          "shape":"OrganizationConformancePackNames",
          "documentation":"<p>The names of organization conformance packs for which you want status details. If you do not specify any names, Config returns details for all your organization conformance packs. </p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of OrganizationConformancePackStatuses returned on each page. If you do no specify a number, Config uses the default. The default is 100. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConformancePackStatusesResponse":{
      "type":"structure",
      "members":{
        "OrganizationConformancePackStatuses":{
          "shape":"OrganizationConformancePackStatuses",
          "documentation":"<p>A list of <code>OrganizationConformancePackStatus</code> objects. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeOrganizationConformancePacksRequest":{
      "type":"structure",
      "members":{
        "OrganizationConformancePackNames":{
          "shape":"OrganizationConformancePackNames",
          "documentation":"<p>The name that you assign to an organization conformance pack.</p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of organization config packs returned on each page. If you do no specify a number, Config uses the default. The default is 100.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeOrganizationConformancePacksResponse":{
      "type":"structure",
      "members":{
        "OrganizationConformancePacks":{
          "shape":"OrganizationConformancePacks",
          "documentation":"<p>Returns a list of OrganizationConformancePacks objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribePendingAggregationRequestsLimit":{
      "type":"integer",
      "max":20,
      "min":0
    },
    "DescribePendingAggregationRequestsRequest":{
      "type":"structure",
      "members":{
        "Limit":{
          "shape":"DescribePendingAggregationRequestsLimit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribePendingAggregationRequestsResponse":{
      "type":"structure",
      "members":{
        "PendingAggregationRequests":{
          "shape":"PendingAggregationRequestList",
          "documentation":"<p>Returns a PendingAggregationRequests object.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeRemediationConfigurationsRequest":{
      "type":"structure",
      "required":["ConfigRuleNames"],
      "members":{
        "ConfigRuleNames":{
          "shape":"ConfigRuleNames",
          "documentation":"<p>A list of Config rule names of remediation configurations for which you want details. </p>"
        }
      }
    },
    "DescribeRemediationConfigurationsResponse":{
      "type":"structure",
      "members":{
        "RemediationConfigurations":{
          "shape":"RemediationConfigurations",
          "documentation":"<p>Returns a remediation configuration object.</p>"
        }
      }
    },
    "DescribeRemediationExceptionsRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ResourceKeys":{
          "shape":"RemediationExceptionResourceKeys",
          "documentation":"<p>An exception list of resource exception keys to be processed with the current request. Config adds exception for each resource key. For example, Config adds 3 exceptions for 3 resource keys. </p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of RemediationExceptionResourceKey returned on each page. The default is 25. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeRemediationExceptionsResponse":{
      "type":"structure",
      "members":{
        "RemediationExceptions":{
          "shape":"RemediationExceptions",
          "documentation":"<p>Returns a list of remediation exception objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeRemediationExecutionStatusRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ResourceKeys":{
          "shape":"ResourceKeys",
          "documentation":"<p>A list of resource keys to be processed with the current request. Each element in the list consists of the resource type and resource ID. </p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of RemediationExecutionStatuses returned on each page. The default is maximum. If you specify 0, Config uses the default. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeRemediationExecutionStatusResponse":{
      "type":"structure",
      "members":{
        "RemediationExecutionStatuses":{
          "shape":"RemediationExecutionStatuses",
          "documentation":"<p>Returns a list of remediation execution statuses objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "DescribeRetentionConfigurationsRequest":{
      "type":"structure",
      "members":{
        "RetentionConfigurationNames":{
          "shape":"RetentionConfigurationNameList",
          "documentation":"<p>A list of names of retention configurations for which you want details. If you do not specify a name, Config returns details for all the retention configurations for that account.</p> <note> <p>Currently, Config supports only one retention configuration per region in your account.</p> </note>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "DescribeRetentionConfigurationsResponse":{
      "type":"structure",
      "members":{
        "RetentionConfigurations":{
          "shape":"RetentionConfigurationList",
          "documentation":"<p>Returns a retention configuration object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "Description":{
      "type":"string",
      "max":256,
      "min":1
    },
    "DisassociateResourceTypesRequest":{
      "type":"structure",
      "required":[
        "ConfigurationRecorderArn",
        "ResourceTypes"
      ],
      "members":{
        "ConfigurationRecorderArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the specified configuration recorder.</p>"
        },
        "ResourceTypes":{
          "shape":"ResourceTypeList",
          "documentation":"<p>The list of resource types you want to remove from the recording group of the specified configuration recorder.</p>"
        }
      }
    },
    "DisassociateResourceTypesResponse":{
      "type":"structure",
      "required":["ConfigurationRecorder"],
      "members":{
        "ConfigurationRecorder":{"shape":"ConfigurationRecorder"}
      }
    },
    "DiscoveredResourceIdentifierList":{
      "type":"list",
      "member":{"shape":"AggregateResourceIdentifier"}
    },
    "EarlierTime":{"type":"timestamp"},
    "EmptiableStringWithCharLimit256":{
      "type":"string",
      "max":256,
      "min":0
    },
    "ErrorMessage":{"type":"string"},
    "Evaluation":{
      "type":"structure",
      "required":[
        "ComplianceResourceType",
        "ComplianceResourceId",
        "ComplianceType",
        "OrderingTimestamp"
      ],
      "members":{
        "ComplianceResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of Amazon Web Services resource that was evaluated.</p>"
        },
        "ComplianceResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>Indicates whether the Amazon Web Services resource complies with the Config rule that it was evaluated against.</p> <p>For the <code>Evaluation</code> data type, Config supports only the <code>COMPLIANT</code>, <code>NON_COMPLIANT</code>, and <code>NOT_APPLICABLE</code> values. Config does not support the <code>INSUFFICIENT_DATA</code> value for this data type.</p> <p>Similarly, Config does not accept <code>INSUFFICIENT_DATA</code> as the value for <code>ComplianceType</code> from a <code>PutEvaluations</code> request. For example, an Lambda function for a custom Config rule cannot pass an <code>INSUFFICIENT_DATA</code> value to Config.</p>"
        },
        "Annotation":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Supplementary information about how the evaluation determined the compliance.</p>"
        },
        "OrderingTimestamp":{
          "shape":"OrderingTimestamp",
          "documentation":"<p>The time of the event in Config that triggered the evaluation. For event-based evaluations, the time indicates when Config created the configuration item that triggered the evaluation. For periodic evaluations, the time indicates when Config triggered the evaluation at the frequency that you specified (for example, every 24 hours).</p>"
        }
      },
      "documentation":"<p>Identifies an Amazon Web Services resource and indicates whether it complies with the Config rule that it was evaluated against.</p>"
    },
    "EvaluationContext":{
      "type":"structure",
      "members":{
        "EvaluationContextIdentifier":{
          "shape":"EvaluationContextIdentifier",
          "documentation":"<p>A unique EvaluationContextIdentifier ID for an EvaluationContext.</p>"
        }
      },
      "documentation":"<p>Use EvaluationContext to group independently initiated proactive resource evaluations. For example, CFN Stack. If you want to check just a resource definition, you do not need to provide evaluation context.</p>"
    },
    "EvaluationContextIdentifier":{
      "type":"string",
      "max":128,
      "min":1
    },
    "EvaluationMode":{
      "type":"string",
      "enum":[
        "DETECTIVE",
        "PROACTIVE"
      ]
    },
    "EvaluationModeConfiguration":{
      "type":"structure",
      "members":{
        "Mode":{
          "shape":"EvaluationMode",
          "documentation":"<p>The mode of an evaluation. The valid values are Detective or Proactive.</p>"
        }
      },
      "documentation":"<p>The configuration object for Config rule evaluation mode. The supported valid values are Detective or Proactive.</p>"
    },
    "EvaluationModes":{
      "type":"list",
      "member":{"shape":"EvaluationModeConfiguration"}
    },
    "EvaluationResult":{
      "type":"structure",
      "members":{
        "EvaluationResultIdentifier":{
          "shape":"EvaluationResultIdentifier",
          "documentation":"<p>Uniquely identifies the evaluation result.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>Indicates whether the Amazon Web Services resource complies with the Config rule that evaluated it.</p> <p>For the <code>EvaluationResult</code> data type, Config supports only the <code>COMPLIANT</code>, <code>NON_COMPLIANT</code>, and <code>NOT_APPLICABLE</code> values. Config does not support the <code>INSUFFICIENT_DATA</code> value for the <code>EvaluationResult</code> data type.</p>"
        },
        "ResultRecordedTime":{
          "shape":"Date",
          "documentation":"<p>The time when Config recorded the evaluation result.</p>"
        },
        "ConfigRuleInvokedTime":{
          "shape":"Date",
          "documentation":"<p>The time when the Config rule evaluated the Amazon Web Services resource.</p>"
        },
        "Annotation":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Supplementary information about how the evaluation determined the compliance.</p>"
        },
        "ResultToken":{
          "shape":"String",
          "documentation":"<p>An encrypted token that associates an evaluation with an Config rule. The token identifies the rule, the Amazon Web Services resource being evaluated, and the event that triggered the evaluation.</p>"
        }
      },
      "documentation":"<p>The details of an Config evaluation. Provides the Amazon Web Services resource that was evaluated, the compliance of the resource, related time stamps, and supplementary information.</p>"
    },
    "EvaluationResultIdentifier":{
      "type":"structure",
      "members":{
        "EvaluationResultQualifier":{
          "shape":"EvaluationResultQualifier",
          "documentation":"<p>Identifies an Config rule used to evaluate an Amazon Web Services resource, and provides the type and ID of the evaluated resource.</p>"
        },
        "OrderingTimestamp":{
          "shape":"Date",
          "documentation":"<p>The time of the event that triggered the evaluation of your Amazon Web Services resources. The time can indicate when Config delivered a configuration item change notification, or it can indicate when Config delivered the configuration snapshot, depending on which event triggered the evaluation.</p>"
        },
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>A Unique ID for an evaluation result.</p>"
        }
      },
      "documentation":"<p>Uniquely identifies an evaluation result.</p>"
    },
    "EvaluationResultQualifier":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule that was used in the evaluation.</p>"
        },
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the evaluated Amazon Web Services resource.</p>"
        },
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>The mode of an evaluation. The valid values are Detective or Proactive.</p>"
        }
      },
      "documentation":"<p>Identifies an Config rule that evaluated an Amazon Web Services resource, and provides the type and ID of the resource that the rule evaluated.</p>"
    },
    "EvaluationResults":{
      "type":"list",
      "member":{"shape":"EvaluationResult"}
    },
    "EvaluationStatus":{
      "type":"structure",
      "required":["Status"],
      "members":{
        "Status":{
          "shape":"ResourceEvaluationStatus",
          "documentation":"<p>The status of an execution. The valid values are In_Progress, Succeeded or Failed. </p>"
        },
        "FailureReason":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>An explanation for failed execution status.</p>"
        }
      },
      "documentation":"<p>Returns status details of an evaluation.</p>"
    },
    "EvaluationTimeout":{
      "type":"integer",
      "max":3600,
      "min":0
    },
    "Evaluations":{
      "type":"list",
      "member":{"shape":"Evaluation"},
      "max":100,
      "min":0
    },
    "EventSource":{
      "type":"string",
      "enum":["aws.config"]
    },
    "ExcludedAccounts":{
      "type":"list",
      "member":{"shape":"AccountId"},
      "max":1000,
      "min":0
    },
    "ExclusionByResourceTypes":{
      "type":"structure",
      "members":{
        "resourceTypes":{
          "shape":"ResourceTypeList",
          "documentation":"<p>A comma-separated list of resource types to exclude from recording by the configuration recorder.</p>"
        }
      },
      "documentation":"<p>Specifies whether the configuration recorder excludes certain resource types from being recorded. Use the <code>resourceTypes</code> field to enter a comma-separated list of resource types you want to exclude from recording.</p> <p>By default, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.</p> <note> <p> <b>How to use the exclusion recording strategy </b> </p> <p>To use this option, you must set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>EXCLUSION_BY_RESOURCE_TYPES</code>.</p> <p>Config will then record configuration changes for all supported resource types, except the resource types that you specify to exclude from being recorded.</p> <p> <b>Global resource types and the exclusion recording strategy </b> </p> <p>Unless specifically listed as exclusions, <code>AWS::RDS::GlobalCluster</code> will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.</p> <p>IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. For a list of those Regions, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-all\">Recording Amazon Web Services Resources | Global Resources</a>.</p> </note>"
    },
    "ExecutionControls":{
      "type":"structure",
      "members":{
        "SsmControls":{
          "shape":"SsmControls",
          "documentation":"<p>A SsmControls object.</p>"
        }
      },
      "documentation":"<p>The controls that Config uses for executing remediations.</p>"
    },
    "Expression":{
      "type":"string",
      "max":4096,
      "min":1
    },
    "ExternalEvaluation":{
      "type":"structure",
      "required":[
        "ComplianceResourceType",
        "ComplianceResourceId",
        "ComplianceType",
        "OrderingTimestamp"
      ],
      "members":{
        "ComplianceResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The evaluated compliance resource type. Config accepts <code>AWS::::Account</code> resource type.</p>"
        },
        "ComplianceResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The evaluated compliance resource ID. Config accepts only Amazon Web Services account ID.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>The compliance of the Amazon Web Services resource. The valid values are <code>COMPLIANT, NON_COMPLIANT, </code> and <code>NOT_APPLICABLE</code>.</p>"
        },
        "Annotation":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Supplementary information about the reason of compliance. For example, this task was completed on a specific date.</p>"
        },
        "OrderingTimestamp":{
          "shape":"OrderingTimestamp",
          "documentation":"<p>The time when the compliance was recorded. </p>"
        }
      },
      "documentation":"<p>Identifies an Amazon Web Services resource and indicates whether it complies with the Config rule that it was evaluated against.</p>"
    },
    "FailedDeleteRemediationExceptionsBatch":{
      "type":"structure",
      "members":{
        "FailureMessage":{
          "shape":"String",
          "documentation":"<p>Returns a failure message for delete remediation exception. For example, Config creates an exception due to an internal error.</p>"
        },
        "FailedItems":{
          "shape":"RemediationExceptionResourceKeys",
          "documentation":"<p>Returns remediation exception resource key object of the failed items.</p>"
        }
      },
      "documentation":"<p>List of each of the failed delete remediation exceptions with specific reasons.</p>"
    },
    "FailedDeleteRemediationExceptionsBatches":{
      "type":"list",
      "member":{"shape":"FailedDeleteRemediationExceptionsBatch"}
    },
    "FailedRemediationBatch":{
      "type":"structure",
      "members":{
        "FailureMessage":{
          "shape":"String",
          "documentation":"<p>Returns a failure message. For example, the resource is already compliant.</p>"
        },
        "FailedItems":{
          "shape":"RemediationConfigurations",
          "documentation":"<p>Returns remediation configurations of the failed items.</p>"
        }
      },
      "documentation":"<p>List of each of the failed remediations with specific reasons.</p>"
    },
    "FailedRemediationBatches":{
      "type":"list",
      "member":{"shape":"FailedRemediationBatch"}
    },
    "FailedRemediationExceptionBatch":{
      "type":"structure",
      "members":{
        "FailureMessage":{
          "shape":"String",
          "documentation":"<p>Returns a failure message. For example, the auto-remediation has failed.</p>"
        },
        "FailedItems":{
          "shape":"RemediationExceptions",
          "documentation":"<p>Returns remediation exception resource key object of the failed items.</p>"
        }
      },
      "documentation":"<p>List of each of the failed remediation exceptions with specific reasons.</p>"
    },
    "FailedRemediationExceptionBatches":{
      "type":"list",
      "member":{"shape":"FailedRemediationExceptionBatch"}
    },
    "FieldInfo":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"FieldName",
          "documentation":"<p>Name of the field.</p>"
        }
      },
      "documentation":"<p>Details about the fields such as name of the field.</p>"
    },
    "FieldInfoList":{
      "type":"list",
      "member":{"shape":"FieldInfo"}
    },
    "FieldName":{"type":"string"},
    "GetAggregateComplianceDetailsByConfigRuleRequest":{
      "type":"structure",
      "required":[
        "ConfigurationAggregatorName",
        "ConfigRuleName",
        "AccountId",
        "AwsRegion"
      ],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule for which you want compliance information.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the source account.</p>"
        },
        "AwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region from where the data is aggregated.</p>"
        },
        "ComplianceType":{
          "shape":"ComplianceType",
          "documentation":"<p>The resource compliance status.</p> <note> <p>For the <code>GetAggregateComplianceDetailsByConfigRuleRequest</code> data type, Config supports only the <code>COMPLIANT</code> and <code>NON_COMPLIANT</code>. Config does not support the <code>NOT_APPLICABLE</code> and <code>INSUFFICIENT_DATA</code> values.</p> </note>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is 50. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateComplianceDetailsByConfigRuleResponse":{
      "type":"structure",
      "members":{
        "AggregateEvaluationResults":{
          "shape":"AggregateEvaluationResultList",
          "documentation":"<p>Returns an AggregateEvaluationResults object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateConfigRuleComplianceSummaryRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Filters":{
          "shape":"ConfigRuleComplianceSummaryFilters",
          "documentation":"<p>Filters the results based on the ConfigRuleComplianceSummaryFilters object.</p>"
        },
        "GroupByKey":{
          "shape":"ConfigRuleComplianceSummaryGroupKey",
          "documentation":"<p>Groups the result based on ACCOUNT_ID or AWS_REGION.</p>"
        },
        "Limit":{
          "shape":"GroupByAPILimit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is 1000. You cannot specify a number greater than 1000. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateConfigRuleComplianceSummaryResponse":{
      "type":"structure",
      "members":{
        "GroupByKey":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Groups the result based on ACCOUNT_ID or AWS_REGION.</p>"
        },
        "AggregateComplianceCounts":{
          "shape":"AggregateComplianceCountList",
          "documentation":"<p>Returns a list of AggregateComplianceCounts object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateConformancePackComplianceSummaryRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Filters":{
          "shape":"AggregateConformancePackComplianceSummaryFilters",
          "documentation":"<p>Filters the results based on the <code>AggregateConformancePackComplianceSummaryFilters</code> object.</p>"
        },
        "GroupByKey":{
          "shape":"AggregateConformancePackComplianceSummaryGroupKey",
          "documentation":"<p>Groups the result based on Amazon Web Services account ID or Amazon Web Services Region.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of results returned on each page. The default is maximum. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateConformancePackComplianceSummaryResponse":{
      "type":"structure",
      "members":{
        "AggregateConformancePackComplianceSummaries":{
          "shape":"AggregateConformancePackComplianceSummaryList",
          "documentation":"<p>Returns a list of <code>AggregateConformancePackComplianceSummary</code> object.</p>"
        },
        "GroupByKey":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Groups the result based on Amazon Web Services account ID or Amazon Web Services Region.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateDiscoveredResourceCountsRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Filters":{
          "shape":"ResourceCountFilters",
          "documentation":"<p>Filters the results based on the <code>ResourceCountFilters</code> object.</p>"
        },
        "GroupByKey":{
          "shape":"ResourceCountGroupKey",
          "documentation":"<p>The key to group the resource counts.</p>"
        },
        "Limit":{
          "shape":"GroupByAPILimit",
          "documentation":"<p>The maximum number of <a>GroupedResourceCount</a> objects returned on each page. The default is 1000. You cannot specify a number greater than 1000. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "GetAggregateDiscoveredResourceCountsResponse":{
      "type":"structure",
      "required":["TotalDiscoveredResources"],
      "members":{
        "TotalDiscoveredResources":{
          "shape":"Long",
          "documentation":"<p>The total number of resources that are present in an aggregator with the filters that you provide.</p>"
        },
        "GroupByKey":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The key passed into the request object. If <code>GroupByKey</code> is not provided, the result will be empty.</p>"
        },
        "GroupedResourceCounts":{
          "shape":"GroupedResourceCountList",
          "documentation":"<p>Returns a list of GroupedResourceCount objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetAggregateResourceConfigRequest":{
      "type":"structure",
      "required":[
        "ConfigurationAggregatorName",
        "ResourceIdentifier"
      ],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "ResourceIdentifier":{
          "shape":"AggregateResourceIdentifier",
          "documentation":"<p>An object that identifies aggregate resource.</p>"
        }
      }
    },
    "GetAggregateResourceConfigResponse":{
      "type":"structure",
      "members":{
        "ConfigurationItem":{
          "shape":"ConfigurationItem",
          "documentation":"<p>Returns a <code>ConfigurationItem</code> object.</p>"
        }
      }
    },
    "GetComplianceDetailsByConfigRuleRequest":{
      "type":"structure",
      "required":["ConfigRuleName"],
      "members":{
        "ConfigRuleName":{
          "shape":"StringWithCharLimit64",
          "documentation":"<p>The name of the Config rule for which you want compliance information.</p>"
        },
        "ComplianceTypes":{
          "shape":"ComplianceTypes",
          "documentation":"<p>Filters the results by compliance.</p> <p> <code>INSUFFICIENT_DATA</code> is a valid <code>ComplianceType</code> that is returned when an Config rule cannot be evaluated. However, <code>INSUFFICIENT_DATA</code> cannot be used as a <code>ComplianceType</code> for filtering results.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceDetailsByConfigRuleResponse":{
      "type":"structure",
      "members":{
        "EvaluationResults":{
          "shape":"EvaluationResults",
          "documentation":"<p>Indicates whether the Amazon Web Services resource complies with the specified Config rule.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceDetailsByResourceRequest":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of the Amazon Web Services resource for which you want compliance information.</p>"
        },
        "ResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the Amazon Web Services resource for which you want compliance information.</p>"
        },
        "ComplianceTypes":{
          "shape":"ComplianceTypes",
          "documentation":"<p>Filters the results by compliance.</p> <p> <code>INSUFFICIENT_DATA</code> is a valid <code>ComplianceType</code> that is returned when an Config rule cannot be evaluated. However, <code>INSUFFICIENT_DATA</code> cannot be used as a <code>ComplianceType</code> for filtering results.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        },
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>The unique ID of Amazon Web Services resource execution for which you want to retrieve evaluation results. </p> <note> <p>You need to only provide either a <code>ResourceEvaluationID</code> or a <code>ResourceID </code>and <code>ResourceType</code>.</p> </note>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceDetailsByResourceResponse":{
      "type":"structure",
      "members":{
        "EvaluationResults":{
          "shape":"EvaluationResults",
          "documentation":"<p>Indicates whether the specified Amazon Web Services resource complies each Config rule.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceSummaryByConfigRuleResponse":{
      "type":"structure",
      "members":{
        "ComplianceSummary":{
          "shape":"ComplianceSummary",
          "documentation":"<p>The number of Config rules that are compliant and the number that are noncompliant, up to a maximum of 25 for each.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceSummaryByResourceTypeRequest":{
      "type":"structure",
      "members":{
        "ResourceTypes":{
          "shape":"ResourceTypes",
          "documentation":"<p>Specify one or more resource types to get the number of resources that are compliant and the number that are noncompliant for each resource type.</p> <p>For this request, you can specify an Amazon Web Services resource type such as <code>AWS::EC2::Instance</code>. You can specify that the resource type is an Amazon Web Services account by specifying <code>AWS::::Account</code>.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetComplianceSummaryByResourceTypeResponse":{
      "type":"structure",
      "members":{
        "ComplianceSummariesByResourceType":{
          "shape":"ComplianceSummariesByResourceType",
          "documentation":"<p>The number of resources that are compliant and the number that are noncompliant. If one or more resource types were provided with the request, the numbers are returned for each resource type. The maximum number returned is 100.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "GetConformancePackComplianceDetailsLimit":{
      "type":"integer",
      "max":100,
      "min":0
    },
    "GetConformancePackComplianceDetailsRequest":{
      "type":"structure",
      "required":["ConformancePackName"],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "Filters":{
          "shape":"ConformancePackEvaluationFilters",
          "documentation":"<p>A <code>ConformancePackEvaluationFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"GetConformancePackComplianceDetailsLimit",
          "documentation":"<p>The maximum number of evaluation results returned on each page. If you do no specify a number, Config uses the default. The default is 100.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetConformancePackComplianceDetailsResponse":{
      "type":"structure",
      "required":["ConformancePackName"],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>Name of the conformance pack.</p>"
        },
        "ConformancePackRuleEvaluationResults":{
          "shape":"ConformancePackRuleEvaluationResultsList",
          "documentation":"<p>Returns a list of <code>ConformancePackEvaluationResult</code> objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetConformancePackComplianceSummaryRequest":{
      "type":"structure",
      "required":["ConformancePackNames"],
      "members":{
        "ConformancePackNames":{
          "shape":"ConformancePackNamesToSummarizeList",
          "documentation":"<p>Names of conformance packs.</p>"
        },
        "Limit":{
          "shape":"PageSizeLimit",
          "documentation":"<p>The maximum number of conformance packs returned on each page.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetConformancePackComplianceSummaryResponse":{
      "type":"structure",
      "members":{
        "ConformancePackComplianceSummaryList":{
          "shape":"ConformancePackComplianceSummaryList",
          "documentation":"<p>A list of <code>ConformancePackComplianceSummary</code> objects. </p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetCustomRulePolicyRequest":{
      "type":"structure",
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of your Config Custom Policy rule.</p>"
        }
      }
    },
    "GetCustomRulePolicyResponse":{
      "type":"structure",
      "members":{
        "PolicyText":{
          "shape":"PolicyText",
          "documentation":"<p>The policy definition containing the logic for your Config Custom Policy rule.</p>"
        }
      }
    },
    "GetDiscoveredResourceCountsRequest":{
      "type":"structure",
      "members":{
        "resourceTypes":{
          "shape":"ResourceTypes",
          "documentation":"<p>The comma-separated list that specifies the resource types that you want Config to return (for example, <code>\"AWS::EC2::Instance\"</code>, <code>\"AWS::IAM::User\"</code>).</p> <p>If a value for <code>resourceTypes</code> is not specified, Config returns all resource types that Config is recording in the region for your account.</p> <note> <p>If the configuration recorder is turned off, Config returns an empty list of <a>ResourceCount</a> objects. If the configuration recorder is not recording a specific resource type (for example, S3 buckets), that resource type is not returned in the list of <a>ResourceCount</a> objects.</p> </note>"
        },
        "limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of <a>ResourceCount</a> objects returned on each page. The default is 100. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetDiscoveredResourceCountsResponse":{
      "type":"structure",
      "members":{
        "totalDiscoveredResources":{
          "shape":"Long",
          "documentation":"<p>The total number of resources that Config is recording in the region for your account. If you specify resource types in the request, Config returns only the total number of resources for those resource types.</p> <p class=\"title\"> <b>Example</b> </p> <ol> <li> <p>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, for a total of 60 resources.</p> </li> <li> <p>You make a call to the <code>GetDiscoveredResourceCounts</code> action and specify the resource type, <code>\"AWS::EC2::Instances\"</code>, in the request.</p> </li> <li> <p>Config returns 25 for <code>totalDiscoveredResources</code>.</p> </li> </ol>"
        },
        "resourceCounts":{
          "shape":"ResourceCounts",
          "documentation":"<p>The list of <code>ResourceCount</code> objects. Each object is listed in descending order by the number of resources.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "GetOrganizationConfigRuleDetailedStatusRequest":{
      "type":"structure",
      "required":["OrganizationConfigRuleName"],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name of your organization Config rule for which you want status details for member accounts.</p>"
        },
        "Filters":{
          "shape":"StatusDetailFilters",
          "documentation":"<p>A <code>StatusDetailFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of <code>OrganizationConfigRuleDetailedStatus</code> returned on each page. If you do not specify a number, Config uses the default. The default is 100.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "GetOrganizationConfigRuleDetailedStatusResponse":{
      "type":"structure",
      "members":{
        "OrganizationConfigRuleDetailedStatus":{
          "shape":"OrganizationConfigRuleDetailedStatus",
          "documentation":"<p>A list of <code>MemberAccountStatus</code> objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "GetOrganizationConformancePackDetailedStatusRequest":{
      "type":"structure",
      "required":["OrganizationConformancePackName"],
      "members":{
        "OrganizationConformancePackName":{
          "shape":"OrganizationConformancePackName",
          "documentation":"<p>The name of organization conformance pack for which you want status details for member accounts.</p>"
        },
        "Filters":{
          "shape":"OrganizationResourceDetailedStatusFilters",
          "documentation":"<p>An <code>OrganizationResourceDetailedStatusFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"CosmosPageLimit",
          "documentation":"<p>The maximum number of <code>OrganizationConformancePackDetailedStatuses</code> returned on each page. If you do not specify a number, Config uses the default. The default is 100. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "GetOrganizationConformancePackDetailedStatusResponse":{
      "type":"structure",
      "members":{
        "OrganizationConformancePackDetailedStatuses":{
          "shape":"OrganizationConformancePackDetailedStatuses",
          "documentation":"<p>A list of <code>OrganizationConformancePackDetailedStatus</code> objects. </p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "GetOrganizationCustomRulePolicyRequest":{
      "type":"structure",
      "required":["OrganizationConfigRuleName"],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name of your organization Config Custom Policy rule. </p>"
        }
      }
    },
    "GetOrganizationCustomRulePolicyResponse":{
      "type":"structure",
      "members":{
        "PolicyText":{
          "shape":"PolicyText",
          "documentation":"<p>The policy definition containing the logic for your organization Config Custom Policy rule.</p>"
        }
      }
    },
    "GetResourceConfigHistoryRequest":{
      "type":"structure",
      "required":[
        "resourceType",
        "resourceId"
      ],
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The resource type.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource (for example., <code>sg-xxxxxx</code>).</p>"
        },
        "laterTime":{
          "shape":"LaterTime",
          "documentation":"<p>The chronologically latest time in the time range for which the history requested. If not specified, current time is taken.</p>"
        },
        "earlierTime":{
          "shape":"EarlierTime",
          "documentation":"<p>The chronologically earliest time in the time range for which the history requested. If not specified, the action returns paginated results that contain configuration items that start when the first configuration item was recorded.</p>"
        },
        "chronologicalOrder":{
          "shape":"ChronologicalOrder",
          "documentation":"<p>The chronological order for configuration items listed. By default, the results are listed in reverse chronological order.</p>"
        },
        "limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of configuration items returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p>The input for the <a>GetResourceConfigHistory</a> action.</p>"
    },
    "GetResourceConfigHistoryResponse":{
      "type":"structure",
      "members":{
        "configurationItems":{
          "shape":"ConfigurationItemList",
          "documentation":"<p>A list that contains the configuration history of one or more resources.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p>The output for the <a>GetResourceConfigHistory</a> action.</p>"
    },
    "GetResourceEvaluationSummaryRequest":{
      "type":"structure",
      "required":["ResourceEvaluationId"],
      "members":{
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>The unique <code>ResourceEvaluationId</code> of Amazon Web Services resource execution for which you want to retrieve the evaluation summary.</p>"
        }
      }
    },
    "GetResourceEvaluationSummaryResponse":{
      "type":"structure",
      "members":{
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>The unique <code>ResourceEvaluationId</code> of Amazon Web Services resource execution for which you want to retrieve the evaluation summary.</p>"
        },
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>Lists results of the mode that you requested to retrieve the resource evaluation summary. The valid values are Detective or Proactive.</p>"
        },
        "EvaluationStatus":{
          "shape":"EvaluationStatus",
          "documentation":"<p>Returns an <code>EvaluationStatus</code> object.</p>"
        },
        "EvaluationStartTimestamp":{
          "shape":"Date",
          "documentation":"<p>The start timestamp when Config rule starts evaluating compliance for the provided resource details.</p>"
        },
        "Compliance":{
          "shape":"ComplianceType",
          "documentation":"<p>The compliance status of the resource evaluation summary.</p>"
        },
        "EvaluationContext":{
          "shape":"EvaluationContext",
          "documentation":"<p>Returns an <code>EvaluationContext</code> object.</p>"
        },
        "ResourceDetails":{
          "shape":"ResourceDetails",
          "documentation":"<p>Returns a <code>ResourceDetails</code> object.</p>"
        }
      }
    },
    "GetStoredQueryRequest":{
      "type":"structure",
      "required":["QueryName"],
      "members":{
        "QueryName":{
          "shape":"QueryName",
          "documentation":"<p>The name of the query.</p>"
        }
      }
    },
    "GetStoredQueryResponse":{
      "type":"structure",
      "members":{
        "StoredQuery":{
          "shape":"StoredQuery",
          "documentation":"<p>Returns a <code>StoredQuery</code> object.</p>"
        }
      }
    },
    "GroupByAPILimit":{
      "type":"integer",
      "max":1000,
      "min":0
    },
    "GroupedResourceCount":{
      "type":"structure",
      "required":[
        "GroupName",
        "ResourceCount"
      ],
      "members":{
        "GroupName":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The name of the group that can be region, account ID, or resource type. For example, region1, region2 if the region was chosen as <code>GroupByKey</code>.</p>"
        },
        "ResourceCount":{
          "shape":"Long",
          "documentation":"<p>The number of resources in the group.</p>"
        }
      },
      "documentation":"<p>The count of resources that are grouped by the group name.</p>"
    },
    "GroupedResourceCountList":{
      "type":"list",
      "member":{"shape":"GroupedResourceCount"}
    },
    "IdempotentParameterMismatch":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Using the same client token with one or more different parameters. Specify a new client token with the parameter changes and try again.</p>",
      "exception":true
    },
    "IncludeGlobalResourceTypes":{"type":"boolean"},
    "InsufficientDeliveryPolicyException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Your Amazon S3 bucket policy does not allow Config to write to it.</p>",
      "exception":true
    },
    "InsufficientPermissionsException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Indicates one of the following errors:</p> <ul> <li> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigRule.html\">PutConfigRule</a>, the rule cannot be created because the IAM role assigned to Config lacks permissions to perform the config:Put* action.</p> </li> <li> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigRule.html\">PutConfigRule</a>, the Lambda function cannot be invoked. Check the function ARN, and check the function's permissions.</p> </li> <li> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutOrganizationConfigRule.html\">PutOrganizationConfigRule</a>, organization Config rule cannot be created because you do not have permissions to call IAM <code>GetRole</code> action or create a service-linked role.</p> </li> <li> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConformancePack.html\">PutConformancePack</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutOrganizationConformancePack.html\">PutOrganizationConformancePack</a>, a conformance pack cannot be created because you do not have the following permissions: </p> <ul> <li> <p>You do not have permission to call IAM <code>GetRole</code> action or create a service-linked role.</p> </li> <li> <p>You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.</p> </li> </ul> </li> <li> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutServiceLinkedConfigurationRecorder.html\">PutServiceLinkedConfigurationRecorder</a>, a service-linked configuration recorder cannot be created because you do not have the following permissions: IAM <code>CreateServiceLinkedRole</code>.</p> </li> </ul>",
      "exception":true
    },
    "Integer":{"type":"integer"},
    "InvalidConfigurationRecorderNameException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have provided a name for the customer managed configuration recorder that is not valid.</p>",
      "exception":true
    },
    "InvalidDeliveryChannelNameException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified delivery channel name is not valid.</p>",
      "exception":true
    },
    "InvalidExpressionException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The syntax of the query is incorrect.</p>",
      "exception":true
    },
    "InvalidLimitException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified limit is outside the allowable range.</p>",
      "exception":true
    },
    "InvalidNextTokenException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified next token is not valid. Specify the <code>nextToken</code> string that was returned in the previous response to get the next page of results.</p>",
      "exception":true
    },
    "InvalidParameterValueException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>One or more of the specified parameters are not valid. Verify that your parameters are valid and try again.</p>",
      "exception":true
    },
    "InvalidRecordingGroupException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>One of the following errors:</p> <ul> <li> <p>You have provided a combination of parameter values that is not valid. For example:</p> <ul> <li> <p>Setting the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>, but providing a non-empty list for the <code>resourceTypes</code>field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>.</p> </li> <li> <p>Setting the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>, but also setting the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>EXCLUSION_BY_RESOURCE_TYPES</code>.</p> </li> </ul> </li> <li> <p>Every parameter is either null, false, or empty.</p> </li> <li> <p>You have reached the limit of the number of resource types you can provide for the recording group.</p> </li> <li> <p>You have provided resource types or a recording strategy that are not valid.</p> </li> </ul>",
      "exception":true
    },
    "InvalidResultTokenException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified <code>ResultToken</code> is not valid.</p>",
      "exception":true
    },
    "InvalidRoleException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have provided a null or empty Amazon Resource Name (ARN) for the IAM role assumed by Config and used by the customer managed configuration recorder.</p>",
      "exception":true
    },
    "InvalidS3KeyPrefixException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified Amazon S3 key prefix is not valid.</p>",
      "exception":true
    },
    "InvalidS3KmsKeyArnException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified Amazon KMS Key ARN is not valid.</p>",
      "exception":true
    },
    "InvalidSNSTopicARNException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified Amazon SNS topic does not exist.</p>",
      "exception":true
    },
    "InvalidTimeRangeException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified time range is not valid. The earlier time is not chronologically before the later time.</p>",
      "exception":true
    },
    "LastDeliveryChannelDeleteFailedException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You cannot delete the delivery channel you specified because the customer managed configuration recorder is running.</p>",
      "exception":true
    },
    "LastUpdatedTime":{"type":"timestamp"},
    "LaterTime":{"type":"timestamp"},
    "Limit":{
      "type":"integer",
      "max":100,
      "min":0
    },
    "LimitExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>For <code>PutServiceLinkedConfigurationRecorder</code> API, this exception is thrown if the number of service-linked roles in the account exceeds the limit.</p> <p>For <code>StartConfigRulesEvaluation</code> API, this exception is thrown if an evaluation is in progress or if you call the <a>StartConfigRulesEvaluation</a> API more than once per minute.</p> <p>For <code>PutConfigurationAggregator</code> API, this exception is thrown if the number of accounts and aggregators exceeds the limit.</p>",
      "exception":true
    },
    "ListAggregateDiscoveredResourcesRequest":{
      "type":"structure",
      "required":[
        "ConfigurationAggregatorName",
        "ResourceType"
      ],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator. </p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resources that you want Config to list in the response.</p>"
        },
        "Filters":{
          "shape":"ResourceFilters",
          "documentation":"<p>Filters the results based on the <code>ResourceFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of resource identifiers returned on each page. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListAggregateDiscoveredResourcesResponse":{
      "type":"structure",
      "members":{
        "ResourceIdentifiers":{
          "shape":"DiscoveredResourceIdentifierList",
          "documentation":"<p>Returns a list of <code>ResourceIdentifiers</code> objects.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListConfigurationRecordersRequest":{
      "type":"structure",
      "members":{
        "Filters":{
          "shape":"ConfigurationRecorderFilterList",
          "documentation":"<p>Filters the results based on a list of <code>ConfigurationRecorderFilter</code> objects that you specify.</p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to include in the response.</p>",
          "box":true
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>NextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListConfigurationRecordersResponse":{
      "type":"structure",
      "required":["ConfigurationRecorderSummaries"],
      "members":{
        "ConfigurationRecorderSummaries":{
          "shape":"ConfigurationRecorderSummaries",
          "documentation":"<p>A list of <code>ConfigurationRecorderSummary</code> objects that includes.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>NextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListConformancePackComplianceScoresRequest":{
      "type":"structure",
      "members":{
        "Filters":{
          "shape":"ConformancePackComplianceScoresFilters",
          "documentation":"<p>Filters the results based on the <code>ConformancePackComplianceScoresFilters</code>.</p>"
        },
        "SortOrder":{
          "shape":"SortOrder",
          "documentation":"<p>Determines the order in which conformance pack compliance scores are sorted. Either in ascending or descending order.</p> <p>By default, conformance pack compliance scores are sorted in alphabetical order by name of the conformance pack. Conformance pack compliance scores are sorted in reverse alphabetical order if you enter <code>DESCENDING</code>.</p> <p>You can sort conformance pack compliance scores by the numerical value of the compliance score by entering <code>SCORE</code> in the <code>SortBy</code> action. When compliance scores are sorted by <code>SCORE</code>, conformance packs with a compliance score of <code>INSUFFICIENT_DATA</code> will be last when sorting by ascending order and first when sorting by descending order.</p>"
        },
        "SortBy":{
          "shape":"SortBy",
          "documentation":"<p>Sorts your conformance pack compliance scores in either ascending or descending order, depending on <code>SortOrder</code>.</p> <p>By default, conformance pack compliance scores are sorted in alphabetical order by name of the conformance pack. Enter <code>SCORE</code>, to sort conformance pack compliance scores by the numerical value of the compliance score.</p>"
        },
        "Limit":{
          "shape":"PageSizeLimit",
          "documentation":"<p>The maximum number of conformance pack compliance scores returned on each page.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string in a prior request that you can use to get the paginated response for the next set of conformance pack compliance scores.</p>"
        }
      }
    },
    "ListConformancePackComplianceScoresResponse":{
      "type":"structure",
      "required":["ConformancePackComplianceScores"],
      "members":{
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string that you can use to get the next page of results in a paginated response.</p>"
        },
        "ConformancePackComplianceScores":{
          "shape":"ConformancePackComplianceScores",
          "documentation":"<p>A list of <code>ConformancePackComplianceScore</code> objects.</p>"
        }
      }
    },
    "ListDiscoveredResourcesRequest":{
      "type":"structure",
      "required":["resourceType"],
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resources that you want Config to list in the response.</p>"
        },
        "resourceIds":{
          "shape":"ResourceIdList",
          "documentation":"<p>The IDs of only those resources that you want Config to list in the response. If you do not specify this parameter, Config lists all resources of the specified type that it has discovered. You can list a minimum of 1 resourceID and a maximum of 20 resourceIds.</p>"
        },
        "resourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The custom name of only those resources that you want Config to list in the response. If you do not specify this parameter, Config lists all resources of the specified type that it has discovered.</p>"
        },
        "limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of resource identifiers returned on each page. The default is 100. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "includeDeletedResources":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether Config includes deleted resources in the results. By default, deleted resources are not included.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "ListDiscoveredResourcesResponse":{
      "type":"structure",
      "members":{
        "resourceIdentifiers":{
          "shape":"ResourceIdentifierList",
          "documentation":"<p>The details that identify a resource that is discovered by Config, including the resource type, ID, and (if available) the custom resource name.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "ListResourceEvaluationsPageItemLimit":{
      "type":"integer",
      "max":100,
      "min":0
    },
    "ListResourceEvaluationsRequest":{
      "type":"structure",
      "members":{
        "Filters":{
          "shape":"ResourceEvaluationFilters",
          "documentation":"<p>Returns a <code>ResourceEvaluationFilters</code> object.</p>"
        },
        "Limit":{
          "shape":"ListResourceEvaluationsPageItemLimit",
          "documentation":"<p>The maximum number of evaluations returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, Config uses the default.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListResourceEvaluationsResponse":{
      "type":"structure",
      "members":{
        "ResourceEvaluations":{
          "shape":"ResourceEvaluations",
          "documentation":"<p>Returns a <code>ResourceEvaluations</code> object.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
        }
      }
    },
    "ListStoredQueriesRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The nextToken string returned in a previous request that you use to request the next page of results in a paginated response.</p>",
          "box":true
        },
        "MaxResults":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of results to be returned with a single call.</p>",
          "box":true
        }
      }
    },
    "ListStoredQueriesResponse":{
      "type":"structure",
      "members":{
        "StoredQueryMetadata":{
          "shape":"StoredQueryMetadataList",
          "documentation":"<p>A list of <code>StoredQueryMetadata</code> objects.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>If the previous paginated request didn't return all of the remaining results, the response object's <code>NextToken</code> parameter value is set to a token. To retrieve the next set of results, call this operation again and assign that token to the request object's <code>NextToken</code> parameter. If there are no remaining results, the previous response object's <code>NextToken</code> parameter is set to <code>null</code>. </p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["ResourceArn"],
      "members":{
        "ResourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. The following resources are supported:</p> <ul> <li> <p> <code>ConfigurationRecorder</code> </p> </li> <li> <p> <code>ConfigRule</code> </p> </li> <li> <p> <code>OrganizationConfigRule</code> </p> </li> <li> <p> <code>ConformancePack</code> </p> </li> <li> <p> <code>OrganizationConformancePack</code> </p> </li> <li> <p> <code>ConfigurationAggregator</code> </p> </li> <li> <p> <code>AggregationAuthorization</code> </p> </li> <li> <p> <code>StoredQuery</code> </p> </li> </ul>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of tags returned on each page. The limit maximum is 50. You cannot specify a number greater than 50. If you specify 0, Config uses the default. </p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "Tags":{
          "shape":"TagList",
          "documentation":"<p>The tags for the resource.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response. </p>"
        }
      }
    },
    "Long":{"type":"long"},
    "MaxActiveResourcesExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of active custom resource types in your account. There is a limit of 100,000. Delete unused resources using <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteResourceConfig.html\">DeleteResourceConfig</a> <code/>.</p>",
      "exception":true
    },
    "MaxNumberOfConfigRulesExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Failed to add the Config rule because the account already contains the maximum number of 1000 rules. Consider deleting any deactivated rules before you add new rules.</p>",
      "exception":true
    },
    "MaxNumberOfConfigurationRecordersExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of configuration recorders you can create.</p>",
      "exception":true
    },
    "MaxNumberOfConformancePacksExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of conformance packs you can create in an account. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p>",
      "exception":true
    },
    "MaxNumberOfDeliveryChannelsExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of delivery channels you can create.</p>",
      "exception":true
    },
    "MaxNumberOfOrganizationConfigRulesExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of organization Config rules you can create. For more information, see see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p>",
      "exception":true
    },
    "MaxNumberOfOrganizationConformancePacksExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of organization conformance packs you can create in an account. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p>",
      "exception":true
    },
    "MaxNumberOfRetentionConfigurationsExceededException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Failed to add the retention configuration because a retention configuration with that name already exists.</p>",
      "exception":true
    },
    "MaxResults":{
      "type":"integer",
      "max":20,
      "min":0
    },
    "MaximumExecutionFrequency":{
      "type":"string",
      "enum":[
        "One_Hour",
        "Three_Hours",
        "Six_Hours",
        "Twelve_Hours",
        "TwentyFour_Hours"
      ]
    },
    "MemberAccountRuleStatus":{
      "type":"string",
      "enum":[
        "CREATE_SUCCESSFUL",
        "CREATE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_SUCCESSFUL",
        "DELETE_FAILED",
        "DELETE_IN_PROGRESS",
        "UPDATE_SUCCESSFUL",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED"
      ]
    },
    "MemberAccountStatus":{
      "type":"structure",
      "required":[
        "AccountId",
        "ConfigRuleName",
        "MemberAccountRuleStatus"
      ],
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of a member account.</p>"
        },
        "ConfigRuleName":{
          "shape":"StringWithCharLimit64",
          "documentation":"<p>The name of Config rule deployed in the member account.</p>"
        },
        "MemberAccountRuleStatus":{
          "shape":"MemberAccountRuleStatus",
          "documentation":"<p>Indicates deployment status for Config rule in the member account. When management account calls <code>PutOrganizationConfigRule</code> action for the first time, Config rule status is created in the member account. When management account calls <code>PutOrganizationConfigRule</code> action for the second time, Config rule status is updated in the member account. Config rule status is deleted when the management account deletes <code>OrganizationConfigRule</code> and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>. </p> <p> Config sets the state of the rule to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when Config rule has been created in the member account. </p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when Config rule is being created in the member account.</p> </li> <li> <p> <code>CREATE_FAILED</code> when Config rule creation has failed in the member account.</p> </li> <li> <p> <code>DELETE_FAILED</code> when Config rule deletion has failed in the member account.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when Config rule is being deleted in the member account.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when Config rule has been deleted in the member account. </p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when Config rule has been updated in the member account.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when Config rule is being updated in the member account.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when Config rule deletion has failed in the member account.</p> </li> </ul>"
        },
        "ErrorCode":{
          "shape":"String",
          "documentation":"<p>An error code that is returned when Config rule creation or deletion failed in the member account.</p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>An error message indicating that Config rule account creation or deletion has failed due to an error in the member account.</p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The timestamp of the last status update.</p>"
        }
      },
      "documentation":"<p>Organization Config rule creation or deletion status in each member account. This includes the name of the rule, the status, error code and error message when the rule creation or deletion failed.</p>"
    },
    "MessageType":{
      "type":"string",
      "enum":[
        "ConfigurationItemChangeNotification",
        "ConfigurationSnapshotDeliveryCompleted",
        "ScheduledNotification",
        "OversizedConfigurationItemChangeNotification"
      ]
    },
    "Name":{"type":"string"},
    "NextToken":{"type":"string"},
    "NoAvailableConfigurationRecorderException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>There are no customer managed configuration recorders available to record your resources. Use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigurationRecorder.html\">PutConfigurationRecorder</a> operation to create the customer managed configuration recorder.</p>",
      "exception":true
    },
    "NoAvailableDeliveryChannelException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>There is no delivery channel available to record configurations.</p>",
      "exception":true
    },
    "NoAvailableOrganizationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Organization is no longer available.</p>",
      "exception":true
    },
    "NoRunningConfigurationRecorderException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>There is no configuration recorder running.</p>",
      "exception":true
    },
    "NoSuchBucketException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The specified Amazon S3 bucket does not exist.</p>",
      "exception":true
    },
    "NoSuchConfigRuleException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>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.</p>",
      "exception":true
    },
    "NoSuchConfigRuleInConformancePackException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Config rule that you passed in the filter does not exist.</p>",
      "exception":true
    },
    "NoSuchConfigurationAggregatorException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a configuration aggregator that does not exist.</p>",
      "exception":true
    },
    "NoSuchConfigurationRecorderException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a configuration recorder that does not exist.</p>",
      "exception":true
    },
    "NoSuchConformancePackException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You specified one or more conformance packs that do not exist.</p>",
      "exception":true
    },
    "NoSuchDeliveryChannelException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a delivery channel that does not exist.</p>",
      "exception":true
    },
    "NoSuchOrganizationConfigRuleException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>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.</p>",
      "exception":true
    },
    "NoSuchOrganizationConformancePackException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Config organization conformance pack that you passed in the filter does not exist.</p> <p>For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not exist.</p>",
      "exception":true
    },
    "NoSuchRemediationConfigurationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You specified an Config rule without a remediation configuration.</p>",
      "exception":true
    },
    "NoSuchRemediationExceptionException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You tried to delete a remediation exception that does not exist.</p>",
      "exception":true
    },
    "NoSuchRetentionConfigurationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a retention configuration that does not exist.</p>",
      "exception":true
    },
    "OrderingTimestamp":{"type":"timestamp"},
    "OrganizationAccessDeniedException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>For <code>PutConfigurationAggregator</code> API, you can see this exception for the following reasons:</p> <ul> <li> <p>No permission to call <code>EnableAWSServiceAccess</code> API</p> </li> <li> <p>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.</p> </li> <li> <p>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.</p> </li> <li> <p>You are not a registered delegated administrator for Config with permissions to call <code>ListDelegatedAdministrators</code> API. Ensure that the management account registers delagated administrator for Config service principal name before the delegated administrator creates an aggregator.</p> </li> </ul> <p>For all <code>OrganizationConfigRule</code> and <code>OrganizationConformancePack</code> APIs, Config throws an exception if APIs are called from member accounts. All APIs must be called from organization management account.</p>",
      "exception":true
    },
    "OrganizationAggregationSource":{
      "type":"structure",
      "required":["RoleArn"],
      "members":{
        "RoleArn":{
          "shape":"String",
          "documentation":"<p>ARN of the IAM role used to retrieve Amazon Web Services Organization details associated with the aggregator account.</p>"
        },
        "AwsRegions":{
          "shape":"AggregatorRegionList",
          "documentation":"<p>The source regions being aggregated.</p>"
        },
        "AllAwsRegions":{
          "shape":"Boolean",
          "documentation":"<p>If true, aggregate existing Config regions and future regions.</p>"
        }
      },
      "documentation":"<p>This object contains regions to set up the aggregator and an IAM role to retrieve organization details.</p>"
    },
    "OrganizationAllFeaturesNotEnabledException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Config resource cannot be created because your organization does not have all features enabled.</p>",
      "exception":true
    },
    "OrganizationConfigRule":{
      "type":"structure",
      "required":[
        "OrganizationConfigRuleName",
        "OrganizationConfigRuleArn"
      ],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name that you assign to organization Config rule.</p>"
        },
        "OrganizationConfigRuleArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Amazon Resource Name (ARN) of organization Config rule.</p>"
        },
        "OrganizationManagedRuleMetadata":{
          "shape":"OrganizationManagedRuleMetadata",
          "documentation":"<p>An <code>OrganizationManagedRuleMetadata</code> object.</p>"
        },
        "OrganizationCustomRuleMetadata":{
          "shape":"OrganizationCustomRuleMetadata",
          "documentation":"<p>An <code>OrganizationCustomRuleMetadata</code> object.</p>"
        },
        "ExcludedAccounts":{
          "shape":"ExcludedAccounts",
          "documentation":"<p>A comma-separated list of accounts excluded from organization Config rule.</p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The timestamp of the last update.</p>"
        },
        "OrganizationCustomPolicyRuleMetadata":{
          "shape":"OrganizationCustomPolicyRuleMetadataNoPolicy",
          "documentation":"<p>An object that specifies metadata for your organization's Config Custom Policy rule. The metadata includes the runtime system in use, which accounts have debug logging enabled, and other custom rule metadata, such as resource type, resource ID of Amazon Web Services resource, and organization trigger types that initiate Config to evaluate Amazon Web Services resources against a rule.</p>"
        }
      },
      "documentation":"<p>An organization Config rule that has information about Config rules that Config creates in member accounts.</p>"
    },
    "OrganizationConfigRuleDetailedStatus":{
      "type":"list",
      "member":{"shape":"MemberAccountStatus"}
    },
    "OrganizationConfigRuleName":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"[A-Za-z0-9-_]+"
    },
    "OrganizationConfigRuleNames":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit64"},
      "max":25,
      "min":0
    },
    "OrganizationConfigRuleStatus":{
      "type":"structure",
      "required":[
        "OrganizationConfigRuleName",
        "OrganizationRuleStatus"
      ],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name that you assign to organization Config rule.</p>"
        },
        "OrganizationRuleStatus":{
          "shape":"OrganizationRuleStatus",
          "documentation":"<p>Indicates deployment status of an organization Config rule. When management account calls PutOrganizationConfigRule action for the first time, Config rule status is created in all the member accounts. When management account calls PutOrganizationConfigRule action for the second time, Config rule status is updated in all the member accounts. Additionally, Config rule status is updated when one or more member accounts join or leave an organization. Config rule status is deleted when the management account deletes OrganizationConfigRule in all the member accounts and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>.</p> <p>Config sets the state of the rule to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when an organization Config rule has been successfully created in all the member accounts. </p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when an organization Config rule creation is in progress.</p> </li> <li> <p> <code>CREATE_FAILED</code> when an organization Config rule creation failed in one or more member accounts within that organization.</p> </li> <li> <p> <code>DELETE_FAILED</code> when an organization Config rule deletion failed in one or more member accounts within that organization.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when an organization Config rule deletion is in progress.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when an organization Config rule has been successfully deleted from all the member accounts.</p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when an organization Config rule has been successfully updated in all the member accounts.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when an organization Config rule update is in progress.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when an organization Config rule update failed in one or more member accounts within that organization.</p> </li> </ul>"
        },
        "ErrorCode":{
          "shape":"String",
          "documentation":"<p>An error code that is returned when organization Config rule creation or deletion has failed.</p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>An error message indicating that organization Config rule creation or deletion failed due to an error.</p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The timestamp of the last update.</p>"
        }
      },
      "documentation":"<p>Returns the status for an organization Config rule in an organization.</p>"
    },
    "OrganizationConfigRuleStatuses":{
      "type":"list",
      "member":{"shape":"OrganizationConfigRuleStatus"}
    },
    "OrganizationConfigRuleTriggerType":{
      "type":"string",
      "enum":[
        "ConfigurationItemChangeNotification",
        "OversizedConfigurationItemChangeNotification",
        "ScheduledNotification"
      ]
    },
    "OrganizationConfigRuleTriggerTypeNoSN":{
      "type":"string",
      "enum":[
        "ConfigurationItemChangeNotification",
        "OversizedConfigurationItemChangeNotification"
      ]
    },
    "OrganizationConfigRuleTriggerTypeNoSNs":{
      "type":"list",
      "member":{"shape":"OrganizationConfigRuleTriggerTypeNoSN"}
    },
    "OrganizationConfigRuleTriggerTypes":{
      "type":"list",
      "member":{"shape":"OrganizationConfigRuleTriggerType"}
    },
    "OrganizationConfigRules":{
      "type":"list",
      "member":{"shape":"OrganizationConfigRule"}
    },
    "OrganizationConformancePack":{
      "type":"structure",
      "required":[
        "OrganizationConformancePackName",
        "OrganizationConformancePackArn",
        "LastUpdateTime"
      ],
      "members":{
        "OrganizationConformancePackName":{
          "shape":"OrganizationConformancePackName",
          "documentation":"<p>The name you assign to an organization conformance pack.</p>"
        },
        "OrganizationConformancePackArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Amazon Resource Name (ARN) of organization conformance pack.</p>"
        },
        "DeliveryS3Bucket":{
          "shape":"DeliveryS3Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket where Config stores conformance pack templates. </p> <note> <p>This field is optional.</p> </note>"
        },
        "DeliveryS3KeyPrefix":{
          "shape":"DeliveryS3KeyPrefix",
          "documentation":"<p>Any folder structure you want to add to an Amazon S3 bucket.</p> <note> <p>This field is optional.</p> </note>"
        },
        "ConformancePackInputParameters":{
          "shape":"ConformancePackInputParameters",
          "documentation":"<p>A list of <code>ConformancePackInputParameter</code> objects.</p>"
        },
        "ExcludedAccounts":{
          "shape":"ExcludedAccounts",
          "documentation":"<p>A comma-separated list of accounts excluded from organization conformance pack.</p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>Last time when organization conformation pack was updated.</p>"
        }
      },
      "documentation":"<p>An organization conformance pack that has information about conformance packs that Config creates in member accounts. </p>"
    },
    "OrganizationConformancePackDetailedStatus":{
      "type":"structure",
      "required":[
        "AccountId",
        "ConformancePackName",
        "Status"
      ],
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of a member account.</p>"
        },
        "ConformancePackName":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The name of conformance pack deployed in the member account.</p>"
        },
        "Status":{
          "shape":"OrganizationResourceDetailedStatus",
          "documentation":"<p>Indicates deployment status for conformance pack in a member account. When management account calls <code>PutOrganizationConformancePack</code> action for the first time, conformance pack status is created in the member account. When management account calls <code>PutOrganizationConformancePack</code> action for the second time, conformance pack status is updated in the member account. Conformance pack status is deleted when the management account deletes <code>OrganizationConformancePack</code> and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>. </p> <p> Config sets the state of the conformance pack to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when conformance pack has been created in the member account. </p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when conformance pack is being created in the member account.</p> </li> <li> <p> <code>CREATE_FAILED</code> when conformance pack creation has failed in the member account.</p> </li> <li> <p> <code>DELETE_FAILED</code> when conformance pack deletion has failed in the member account.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when conformance pack is being deleted in the member account.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when conformance pack has been deleted in the member account. </p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when conformance pack has been updated in the member account.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when conformance pack is being updated in the member account.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when conformance pack deletion has failed in the member account.</p> </li> </ul>"
        },
        "ErrorCode":{
          "shape":"String",
          "documentation":"<p>An error code that is returned when conformance pack creation or deletion failed in the member account. </p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>An error message indicating that conformance pack account creation or deletion has failed due to an error in the member account. </p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The timestamp of the last status update.</p>"
        }
      },
      "documentation":"<p>Organization conformance pack creation or deletion status in each member account. This includes the name of the conformance pack, the status, error code and error message when the conformance pack creation or deletion failed. </p>"
    },
    "OrganizationConformancePackDetailedStatuses":{
      "type":"list",
      "member":{"shape":"OrganizationConformancePackDetailedStatus"}
    },
    "OrganizationConformancePackName":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[a-zA-Z][-a-zA-Z0-9]*"
    },
    "OrganizationConformancePackNames":{
      "type":"list",
      "member":{"shape":"OrganizationConformancePackName"},
      "max":25,
      "min":0
    },
    "OrganizationConformancePackStatus":{
      "type":"structure",
      "required":[
        "OrganizationConformancePackName",
        "Status"
      ],
      "members":{
        "OrganizationConformancePackName":{
          "shape":"OrganizationConformancePackName",
          "documentation":"<p>The name that you assign to organization conformance pack.</p>"
        },
        "Status":{
          "shape":"OrganizationResourceStatus",
          "documentation":"<p>Indicates deployment status of an organization conformance pack. When management account calls PutOrganizationConformancePack for the first time, conformance pack status is created in all the member accounts. When management account calls PutOrganizationConformancePack for the second time, conformance pack status is updated in all the member accounts. Additionally, conformance pack status is updated when one or more member accounts join or leave an organization. Conformance pack status is deleted when the management account deletes OrganizationConformancePack in all the member accounts and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>.</p> <p>Config sets the state of the conformance pack to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when an organization conformance pack has been successfully created in all the member accounts. </p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when an organization conformance pack creation is in progress.</p> </li> <li> <p> <code>CREATE_FAILED</code> when an organization conformance pack creation failed in one or more member accounts within that organization.</p> </li> <li> <p> <code>DELETE_FAILED</code> when an organization conformance pack deletion failed in one or more member accounts within that organization.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when an organization conformance pack deletion is in progress.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when an organization conformance pack has been successfully deleted from all the member accounts.</p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when an organization conformance pack has been successfully updated in all the member accounts.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when an organization conformance pack update is in progress.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when an organization conformance pack update failed in one or more member accounts within that organization.</p> </li> </ul>"
        },
        "ErrorCode":{
          "shape":"String",
          "documentation":"<p>An error code that is returned when organization conformance pack creation or deletion has failed in a member account. </p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>An error message indicating that organization conformance pack creation or deletion failed due to an error. </p>"
        },
        "LastUpdateTime":{
          "shape":"Date",
          "documentation":"<p>The timestamp of the last update.</p>"
        }
      },
      "documentation":"<p>Returns the status for an organization conformance pack in an organization.</p>"
    },
    "OrganizationConformancePackStatuses":{
      "type":"list",
      "member":{"shape":"OrganizationConformancePackStatus"}
    },
    "OrganizationConformancePackTemplateValidationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a template that is not valid or supported.</p>",
      "exception":true
    },
    "OrganizationConformancePacks":{
      "type":"list",
      "member":{"shape":"OrganizationConformancePack"}
    },
    "OrganizationCustomPolicyRuleMetadata":{
      "type":"structure",
      "required":[
        "PolicyRuntime",
        "PolicyText"
      ],
      "members":{
        "Description":{
          "shape":"StringWithCharLimit256Min0",
          "documentation":"<p>The description that you provide for your organization Config Custom Policy rule.</p>"
        },
        "OrganizationConfigRuleTriggerTypes":{
          "shape":"OrganizationConfigRuleTriggerTypeNoSNs",
          "documentation":"<p>The type of notification that initiates Config to run an evaluation for a rule. For Config Custom Policy rules, Config supports change-initiated notification types:</p> <ul> <li> <p> <code>ConfigurationItemChangeNotification</code> - Initiates an evaluation when Config delivers a configuration item as a result of a resource change.</p> </li> <li> <p> <code>OversizedConfigurationItemChangeNotification</code> - Initiates an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.</p> </li> </ul>"
        },
        "InputParameters":{
          "shape":"StringWithCharLimit2048",
          "documentation":"<p>A string, in JSON format, that is passed to your organization Config Custom Policy rule.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The maximum frequency with which Config runs evaluations for a rule. Your Config Custom Policy rule is triggered when Config delivers the configuration snapshot. For more information, see <a>ConfigSnapshotDeliveryProperties</a>.</p>"
        },
        "ResourceTypesScope":{
          "shape":"ResourceTypesScope",
          "documentation":"<p>The type of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceIdScope":{
          "shape":"StringWithCharLimit768",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "TagKeyScope":{
          "shape":"StringWithCharLimit128",
          "documentation":"<p>One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.</p>"
        },
        "TagValueScope":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).</p>"
        },
        "PolicyRuntime":{
          "shape":"PolicyRuntime",
          "documentation":"<p>The runtime system for your organization Config Custom Policy rules. Guard is a policy-as-code language that allows you to write policies that are enforced by Config Custom Policy rules. For more information about Guard, see the <a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>.</p>"
        },
        "PolicyText":{
          "shape":"PolicyText",
          "documentation":"<p>The policy definition containing the logic for your organization Config Custom Policy rule.</p>"
        },
        "DebugLogDeliveryAccounts":{
          "shape":"DebugLogDeliveryAccounts",
          "documentation":"<p>A list of accounts that you can enable debug logging for your organization Config Custom Policy rule. List is null when debug logging is enabled for all accounts.</p>"
        }
      },
      "documentation":"<p>An object that specifies metadata for your organization's Config Custom Policy rule. The metadata includes the runtime system in use, which accounts have debug logging enabled, and other custom rule metadata, such as resource type, resource ID of Amazon Web Services resource, and organization trigger types that initiate Config to evaluate Amazon Web Services resources against a rule.</p>"
    },
    "OrganizationCustomPolicyRuleMetadataNoPolicy":{
      "type":"structure",
      "members":{
        "Description":{
          "shape":"StringWithCharLimit256Min0",
          "documentation":"<p>The description that you provide for your organization Config Custom Policy rule.</p>"
        },
        "OrganizationConfigRuleTriggerTypes":{
          "shape":"OrganizationConfigRuleTriggerTypeNoSNs",
          "documentation":"<p>The type of notification that triggers Config to run an evaluation for a rule. For Config Custom Policy rules, Config supports change triggered notification types:</p> <ul> <li> <p> <code>ConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers a configuration item as a result of a resource change.</p> </li> <li> <p> <code>OversizedConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.</p> </li> </ul>"
        },
        "InputParameters":{
          "shape":"StringWithCharLimit2048",
          "documentation":"<p>A string, in JSON format, that is passed to your organization Config Custom Policy rule.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The maximum frequency with which Config runs evaluations for a rule. Your Config Custom Policy rule is triggered when Config delivers the configuration snapshot. For more information, see <a>ConfigSnapshotDeliveryProperties</a>.</p>"
        },
        "ResourceTypesScope":{
          "shape":"ResourceTypesScope",
          "documentation":"<p>The type of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceIdScope":{
          "shape":"StringWithCharLimit768",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "TagKeyScope":{
          "shape":"StringWithCharLimit128",
          "documentation":"<p>One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.</p>"
        },
        "TagValueScope":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).</p>"
        },
        "PolicyRuntime":{
          "shape":"PolicyRuntime",
          "documentation":"<p>The runtime system for your organization Config Custom Policy rules. Guard is a policy-as-code language that allows you to write policies that are enforced by Config Custom Policy rules. For more information about Guard, see the <a href=\"https://github.com/aws-cloudformation/cloudformation-guard\">Guard GitHub Repository</a>.</p>"
        },
        "DebugLogDeliveryAccounts":{
          "shape":"DebugLogDeliveryAccounts",
          "documentation":"<p>A list of accounts that you can enable debug logging for your organization Config Custom Policy rule. List is null when debug logging is enabled for all accounts.</p>"
        }
      },
      "documentation":"<p> metadata for your organization Config Custom Policy rule including the runtime system in use, which accounts have debug logging enabled, and other custom rule metadata such as resource type, resource ID of Amazon Web Services resource, and organization trigger types that trigger Config to evaluate Amazon Web Services resources against a rule.</p>"
    },
    "OrganizationCustomRuleMetadata":{
      "type":"structure",
      "required":[
        "LambdaFunctionArn",
        "OrganizationConfigRuleTriggerTypes"
      ],
      "members":{
        "Description":{
          "shape":"StringWithCharLimit256Min0",
          "documentation":"<p>The description that you provide for your organization Config rule.</p>"
        },
        "LambdaFunctionArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The lambda function ARN.</p>"
        },
        "OrganizationConfigRuleTriggerTypes":{
          "shape":"OrganizationConfigRuleTriggerTypes",
          "documentation":"<p>The type of notification that triggers Config to run an evaluation for a rule. You can specify the following notification types:</p> <ul> <li> <p> <code>ConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers a configuration item as a result of a resource change.</p> </li> <li> <p> <code>OversizedConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.</p> </li> <li> <p> <code>ScheduledNotification</code> - Triggers a periodic evaluation at the frequency specified for <code>MaximumExecutionFrequency</code>.</p> </li> </ul>"
        },
        "InputParameters":{
          "shape":"StringWithCharLimit2048",
          "documentation":"<p>A string, in JSON format, that is passed to your organization Config rule Lambda function.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The maximum frequency with which Config runs evaluations for a rule. Your custom rule is triggered when Config delivers the configuration snapshot. For more information, see <a>ConfigSnapshotDeliveryProperties</a>.</p> <note> <p>By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the <code>MaximumExecutionFrequency</code> parameter.</p> </note>"
        },
        "ResourceTypesScope":{
          "shape":"ResourceTypesScope",
          "documentation":"<p>The type of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceIdScope":{
          "shape":"StringWithCharLimit768",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "TagKeyScope":{
          "shape":"StringWithCharLimit128",
          "documentation":"<p>One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values. </p>"
        },
        "TagValueScope":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key). </p>"
        }
      },
      "documentation":"<p>An object that specifies organization custom rule metadata such as resource type, resource ID of Amazon Web Services resource, Lambda function ARN, and organization trigger types that trigger Config to evaluate your Amazon Web Services resources against a rule. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic.</p>"
    },
    "OrganizationManagedRuleMetadata":{
      "type":"structure",
      "required":["RuleIdentifier"],
      "members":{
        "Description":{
          "shape":"StringWithCharLimit256Min0",
          "documentation":"<p>The description that you provide for your organization Config rule.</p>"
        },
        "RuleIdentifier":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>For organization config managed rules, a predefined identifier from a list. For example, <code>IAM_PASSWORD_POLICY</code> is a managed rule. To reference a managed rule, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html\">Using Config managed rules</a>.</p>"
        },
        "InputParameters":{
          "shape":"StringWithCharLimit2048",
          "documentation":"<p>A string, in JSON format, that is passed to your organization Config rule Lambda function.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The maximum frequency with which Config runs evaluations for a rule. This is for an Config managed rule that is triggered at a periodic frequency.</p> <note> <p>By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the <code>MaximumExecutionFrequency</code> parameter.</p> </note>"
        },
        "ResourceTypesScope":{
          "shape":"ResourceTypesScope",
          "documentation":"<p>The type of the Amazon Web Services resource that was evaluated.</p>"
        },
        "ResourceIdScope":{
          "shape":"StringWithCharLimit768",
          "documentation":"<p>The ID of the Amazon Web Services resource that was evaluated.</p>"
        },
        "TagKeyScope":{
          "shape":"StringWithCharLimit128",
          "documentation":"<p>One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values. </p>"
        },
        "TagValueScope":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).</p>"
        }
      },
      "documentation":"<p>An object that specifies organization managed rule metadata such as resource type and ID of Amazon Web Services resource along with the rule identifier. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic.</p>"
    },
    "OrganizationResourceDetailedStatus":{
      "type":"string",
      "enum":[
        "CREATE_SUCCESSFUL",
        "CREATE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_SUCCESSFUL",
        "DELETE_FAILED",
        "DELETE_IN_PROGRESS",
        "UPDATE_SUCCESSFUL",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED"
      ]
    },
    "OrganizationResourceDetailedStatusFilters":{
      "type":"structure",
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the member account within an organization.</p>"
        },
        "Status":{
          "shape":"OrganizationResourceDetailedStatus",
          "documentation":"<p>Indicates deployment status for conformance pack in a member account. When management account calls <code>PutOrganizationConformancePack</code> action for the first time, conformance pack status is created in the member account. When management account calls <code>PutOrganizationConformancePack</code> action for the second time, conformance pack status is updated in the member account. Conformance pack status is deleted when the management account deletes <code>OrganizationConformancePack</code> and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>. </p> <p> Config sets the state of the conformance pack to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when conformance pack has been created in the member account. </p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when conformance pack is being created in the member account.</p> </li> <li> <p> <code>CREATE_FAILED</code> when conformance pack creation has failed in the member account.</p> </li> <li> <p> <code>DELETE_FAILED</code> when conformance pack deletion has failed in the member account.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when conformance pack is being deleted in the member account.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when conformance pack has been deleted in the member account. </p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when conformance pack has been updated in the member account.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when conformance pack is being updated in the member account.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when conformance pack deletion has failed in the member account.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Status filter object to filter results based on specific member account ID or status type for an organization conformance pack.</p>"
    },
    "OrganizationResourceStatus":{
      "type":"string",
      "enum":[
        "CREATE_SUCCESSFUL",
        "CREATE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_SUCCESSFUL",
        "DELETE_FAILED",
        "DELETE_IN_PROGRESS",
        "UPDATE_SUCCESSFUL",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED"
      ]
    },
    "OrganizationRuleStatus":{
      "type":"string",
      "enum":[
        "CREATE_SUCCESSFUL",
        "CREATE_IN_PROGRESS",
        "CREATE_FAILED",
        "DELETE_SUCCESSFUL",
        "DELETE_FAILED",
        "DELETE_IN_PROGRESS",
        "UPDATE_SUCCESSFUL",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED"
      ]
    },
    "OversizedConfigurationItemException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The configuration item size is outside the allowable range.</p>",
      "exception":true
    },
    "Owner":{
      "type":"string",
      "enum":[
        "CUSTOM_LAMBDA",
        "AWS",
        "CUSTOM_POLICY"
      ]
    },
    "PageSizeLimit":{
      "type":"integer",
      "max":20,
      "min":0
    },
    "ParameterName":{
      "type":"string",
      "max":255,
      "min":0
    },
    "ParameterValue":{
      "type":"string",
      "max":4096,
      "min":0
    },
    "PendingAggregationRequest":{
      "type":"structure",
      "members":{
        "RequesterAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the account requesting to aggregate data.</p>"
        },
        "RequesterAwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region requesting to aggregate data. </p>"
        }
      },
      "documentation":"<p>An object that represents the account ID and region of an aggregator account that is requesting authorization but is not yet authorized.</p>"
    },
    "PendingAggregationRequestList":{
      "type":"list",
      "member":{"shape":"PendingAggregationRequest"}
    },
    "Percentage":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "PolicyRuntime":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"guard\\-2\\.x\\.x"
    },
    "PolicyText":{
      "type":"string",
      "max":10000,
      "min":0
    },
    "PutAggregationAuthorizationRequest":{
      "type":"structure",
      "required":[
        "AuthorizedAccountId",
        "AuthorizedAwsRegion"
      ],
      "members":{
        "AuthorizedAccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the account authorized to aggregate data.</p>"
        },
        "AuthorizedAwsRegion":{
          "shape":"AwsRegion",
          "documentation":"<p>The region authorized to collect aggregated data.</p>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>An array of tag object.</p>"
        }
      }
    },
    "PutAggregationAuthorizationResponse":{
      "type":"structure",
      "members":{
        "AggregationAuthorization":{
          "shape":"AggregationAuthorization",
          "documentation":"<p>Returns an AggregationAuthorization object. </p>"
        }
      }
    },
    "PutConfigRuleRequest":{
      "type":"structure",
      "required":["ConfigRule"],
      "members":{
        "ConfigRule":{
          "shape":"ConfigRule",
          "documentation":"<p>The rule that you want to add to your account.</p>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>An array of tag object.</p>"
        }
      }
    },
    "PutConfigurationAggregatorRequest":{
      "type":"structure",
      "required":["ConfigurationAggregatorName"],
      "members":{
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "AccountAggregationSources":{
          "shape":"AccountAggregationSourceList",
          "documentation":"<p>A list of AccountAggregationSource object. </p>"
        },
        "OrganizationAggregationSource":{
          "shape":"OrganizationAggregationSource",
          "documentation":"<p>An OrganizationAggregationSource object.</p>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>An array of tag object.</p>"
        },
        "AggregatorFilters":{
          "shape":"AggregatorFilters",
          "documentation":"<p>An object to filter configuration recorders in an aggregator. Either <code>ResourceType</code> or <code>ServicePrincipal</code> is required.</p>"
        }
      }
    },
    "PutConfigurationAggregatorResponse":{
      "type":"structure",
      "members":{
        "ConfigurationAggregator":{
          "shape":"ConfigurationAggregator",
          "documentation":"<p>Returns a ConfigurationAggregator object.</p>"
        }
      }
    },
    "PutConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ConfigurationRecorder"],
      "members":{
        "ConfigurationRecorder":{
          "shape":"ConfigurationRecorder",
          "documentation":"<p>An object for the configuration recorder. A configuration recorder records configuration changes for the resource types in scope.</p>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>The tags for the customer managed configuration recorder. Each tag consists of a key and an optional value, both of which you define.</p>"
        }
      },
      "documentation":"<p>The input for the <a>PutConfigurationRecorder</a> action.</p>"
    },
    "PutConformancePackRequest":{
      "type":"structure",
      "required":["ConformancePackName"],
      "members":{
        "ConformancePackName":{
          "shape":"ConformancePackName",
          "documentation":"<p>The unique name of the conformance pack you want to deploy.</p>"
        },
        "TemplateS3Uri":{
          "shape":"TemplateS3Uri",
          "documentation":"<p>The location of the file containing the template body (<code>s3://bucketname/prefix</code>). The uri must point to a conformance pack template (max size: 300 KB) that is located in an Amazon S3 bucket in the same Region as the conformance pack. </p> <note> <p>You must have access to read Amazon S3 bucket. In addition, in order to ensure a successful deployment, the template object must not be in an <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html\">archived storage class</a> if this parameter is passed.</p> </note>"
        },
        "TemplateBody":{
          "shape":"TemplateBody",
          "documentation":"<p>A string containing the full conformance pack template body. The structure containing the template body has a minimum length of 1 byte and a maximum length of 51,200 bytes.</p> <note> <p>You can use a YAML template with two resource types: Config rule (<code>AWS::Config::ConfigRule</code>) and remediation action (<code>AWS::Config::RemediationConfiguration</code>).</p> </note>"
        },
        "DeliveryS3Bucket":{
          "shape":"DeliveryS3Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket where Config stores conformance pack templates.</p> <note> <p>This field is optional.</p> </note>"
        },
        "DeliveryS3KeyPrefix":{
          "shape":"DeliveryS3KeyPrefix",
          "documentation":"<p>The prefix for the Amazon S3 bucket. </p> <note> <p>This field is optional.</p> </note>"
        },
        "ConformancePackInputParameters":{
          "shape":"ConformancePackInputParameters",
          "documentation":"<p>A list of <code>ConformancePackInputParameter</code> objects.</p>"
        },
        "TemplateSSMDocumentDetails":{
          "shape":"TemplateSSMDocumentDetails",
          "documentation":"<p>An object of type <code>TemplateSSMDocumentDetails</code>, which contains the name or the Amazon Resource Name (ARN) of the Amazon Web Services Systems Manager document (SSM document) and the version of the SSM document that is used to create a conformance pack.</p>"
        }
      }
    },
    "PutConformancePackResponse":{
      "type":"structure",
      "members":{
        "ConformancePackArn":{
          "shape":"ConformancePackArn",
          "documentation":"<p>ARN of the conformance pack.</p>"
        }
      }
    },
    "PutDeliveryChannelRequest":{
      "type":"structure",
      "required":["DeliveryChannel"],
      "members":{
        "DeliveryChannel":{
          "shape":"DeliveryChannel",
          "documentation":"<p>An object for the delivery channel. A delivery channel sends notifications and updated configuration states. </p>"
        }
      },
      "documentation":"<p>The input for the <a>PutDeliveryChannel</a> action.</p>"
    },
    "PutEvaluationsRequest":{
      "type":"structure",
      "required":["ResultToken"],
      "members":{
        "Evaluations":{
          "shape":"Evaluations",
          "documentation":"<p>The assessments that the Lambda function performs. Each evaluation identifies an Amazon Web Services resource and indicates whether it complies with the Config rule that invokes the Lambda function.</p>"
        },
        "ResultToken":{
          "shape":"String",
          "documentation":"<p>An encrypted token that associates an evaluation with an Config rule. Identifies the rule and the event that triggered the evaluation.</p>"
        },
        "TestMode":{
          "shape":"Boolean",
          "documentation":"<p>Use this parameter to specify a test run for <code>PutEvaluations</code>. You can verify whether your Lambda function will deliver evaluation results to Config. No updates occur to your existing evaluations, and evaluation results are not sent to Config.</p> <note> <p>When <code>TestMode</code> is <code>true</code>, <code>PutEvaluations</code> doesn't require a valid value for the <code>ResultToken</code> parameter, but the value cannot be null.</p> </note>"
        }
      },
      "documentation":"<p/>"
    },
    "PutEvaluationsResponse":{
      "type":"structure",
      "members":{
        "FailedEvaluations":{
          "shape":"Evaluations",
          "documentation":"<p>Requests that failed because of a client or server error.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "PutExternalEvaluationRequest":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "ExternalEvaluation"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ExternalEvaluation":{
          "shape":"ExternalEvaluation",
          "documentation":"<p>An <code>ExternalEvaluation</code> object that provides details about compliance.</p>"
        }
      }
    },
    "PutExternalEvaluationResponse":{
      "type":"structure",
      "members":{
      }
    },
    "PutOrganizationConfigRuleRequest":{
      "type":"structure",
      "required":["OrganizationConfigRuleName"],
      "members":{
        "OrganizationConfigRuleName":{
          "shape":"OrganizationConfigRuleName",
          "documentation":"<p>The name that you assign to an organization Config rule.</p>"
        },
        "OrganizationManagedRuleMetadata":{
          "shape":"OrganizationManagedRuleMetadata",
          "documentation":"<p>An <code>OrganizationManagedRuleMetadata</code> object. This object specifies organization managed rule metadata such as resource type and ID of Amazon Web Services resource along with the rule identifier. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic.</p>"
        },
        "OrganizationCustomRuleMetadata":{
          "shape":"OrganizationCustomRuleMetadata",
          "documentation":"<p>An <code>OrganizationCustomRuleMetadata</code> object. This object specifies organization custom rule metadata such as resource type, resource ID of Amazon Web Services resource, Lambda function ARN, and organization trigger types that trigger Config to evaluate your Amazon Web Services resources against a rule. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic.</p>"
        },
        "ExcludedAccounts":{
          "shape":"ExcludedAccounts",
          "documentation":"<p>A comma-separated list of accounts that you want to exclude from an organization Config rule.</p>"
        },
        "OrganizationCustomPolicyRuleMetadata":{
          "shape":"OrganizationCustomPolicyRuleMetadata",
          "documentation":"<p>An <code>OrganizationCustomPolicyRuleMetadata</code> object. This object specifies metadata for your organization's Config Custom Policy rule. The metadata includes the runtime system in use, which accounts have debug logging enabled, and other custom rule metadata, such as resource type, resource ID of Amazon Web Services resource, and organization trigger types that initiate Config to evaluate Amazon Web Services resources against a rule.</p>"
        }
      }
    },
    "PutOrganizationConfigRuleResponse":{
      "type":"structure",
      "members":{
        "OrganizationConfigRuleArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The Amazon Resource Name (ARN) of an organization Config rule.</p>"
        }
      }
    },
    "PutOrganizationConformancePackRequest":{
      "type":"structure",
      "required":["OrganizationConformancePackName"],
      "members":{
        "OrganizationConformancePackName":{
          "shape":"OrganizationConformancePackName",
          "documentation":"<p>Name of the organization conformance pack you want to create.</p>"
        },
        "TemplateS3Uri":{
          "shape":"TemplateS3Uri",
          "documentation":"<p>Location of file containing the template body. The uri must point to the conformance pack template (max size: 300 KB).</p> <note> <p>You must have access to read Amazon S3 bucket. In addition, in order to ensure a successful deployment, the template object must not be in an <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html\">archived storage class</a> if this parameter is passed.</p> </note>"
        },
        "TemplateBody":{
          "shape":"TemplateBody",
          "documentation":"<p>A string containing full conformance pack template body. Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>"
        },
        "DeliveryS3Bucket":{
          "shape":"DeliveryS3Bucket",
          "documentation":"<p>The name of the Amazon S3 bucket where Config stores conformance pack templates.</p> <note> <p>This field is optional. If used, it must be prefixed with <code>awsconfigconforms</code>.</p> </note>"
        },
        "DeliveryS3KeyPrefix":{
          "shape":"DeliveryS3KeyPrefix",
          "documentation":"<p>The prefix for the Amazon S3 bucket.</p> <note> <p>This field is optional.</p> </note>"
        },
        "ConformancePackInputParameters":{
          "shape":"ConformancePackInputParameters",
          "documentation":"<p>A list of <code>ConformancePackInputParameter</code> objects.</p>"
        },
        "ExcludedAccounts":{
          "shape":"ExcludedAccounts",
          "documentation":"<p>A list of Amazon Web Services accounts to be excluded from an organization conformance pack while deploying a conformance pack.</p>"
        }
      }
    },
    "PutOrganizationConformancePackResponse":{
      "type":"structure",
      "members":{
        "OrganizationConformancePackArn":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>ARN of the organization conformance pack.</p>"
        }
      }
    },
    "PutRemediationConfigurationsRequest":{
      "type":"structure",
      "required":["RemediationConfigurations"],
      "members":{
        "RemediationConfigurations":{
          "shape":"RemediationConfigurations",
          "documentation":"<p>A list of remediation configuration objects.</p>"
        }
      }
    },
    "PutRemediationConfigurationsResponse":{
      "type":"structure",
      "members":{
        "FailedBatches":{
          "shape":"FailedRemediationBatches",
          "documentation":"<p>Returns a list of failed remediation batch objects.</p>"
        }
      }
    },
    "PutRemediationExceptionsRequest":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "ResourceKeys"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule for which you want to create remediation exception.</p>"
        },
        "ResourceKeys":{
          "shape":"RemediationExceptionResourceKeys",
          "documentation":"<p>An exception list of resource exception keys to be processed with the current request. Config adds exception for each resource key. For example, Config adds 3 exceptions for 3 resource keys. </p>"
        },
        "Message":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>The message contains an explanation of the exception.</p>"
        },
        "ExpirationTime":{
          "shape":"Date",
          "documentation":"<p>The exception is automatically deleted after the expiration date.</p>"
        }
      }
    },
    "PutRemediationExceptionsResponse":{
      "type":"structure",
      "members":{
        "FailedBatches":{
          "shape":"FailedRemediationExceptionBatches",
          "documentation":"<p>Returns a list of failed remediation exceptions batch objects. Each object in the batch consists of a list of failed items and failure messages.</p>"
        }
      }
    },
    "PutResourceConfigRequest":{
      "type":"structure",
      "required":[
        "ResourceType",
        "SchemaVersionId",
        "ResourceId",
        "Configuration"
      ],
      "members":{
        "ResourceType":{
          "shape":"ResourceTypeString",
          "documentation":"<p>The type of the resource. The custom resource type must be registered with CloudFormation. </p> <note> <p>You cannot use the organization names “amzn”, “amazon”, “alexa”, “custom” with custom resource types. It is the first part of the ResourceType up to the first ::.</p> </note>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionId",
          "documentation":"<p>Version of the schema registered for the ResourceType in CloudFormation.</p>"
        },
        "ResourceId":{
          "shape":"ResourceId",
          "documentation":"<p>Unique identifier of the resource.</p>"
        },
        "ResourceName":{
          "shape":"ResourceName",
          "documentation":"<p>Name of the resource.</p>"
        },
        "Configuration":{
          "shape":"Configuration",
          "documentation":"<p>The configuration object of the resource in valid JSON format. It must match the schema registered with CloudFormation.</p> <note> <p>The configuration JSON must not exceed 64 KB.</p> </note>"
        },
        "Tags":{
          "shape":"Tags",
          "documentation":"<p>Tags associated with the resource.</p> <note> <p>This field is not to be confused with the Amazon Web Services-wide tag feature for Amazon Web Services resources. Tags for <code>PutResourceConfig</code> are tags that you supply for the configuration items of your custom resources.</p> </note>"
        }
      }
    },
    "PutRetentionConfigurationRequest":{
      "type":"structure",
      "required":["RetentionPeriodInDays"],
      "members":{
        "RetentionPeriodInDays":{
          "shape":"RetentionPeriodInDays",
          "documentation":"<p>Number of days Config stores your historical information.</p> <note> <p>Currently, only applicable to the configuration item history.</p> </note>"
        }
      }
    },
    "PutRetentionConfigurationResponse":{
      "type":"structure",
      "members":{
        "RetentionConfiguration":{
          "shape":"RetentionConfiguration",
          "documentation":"<p>Returns a retention configuration object.</p>"
        }
      }
    },
    "PutServiceLinkedConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ServicePrincipal"],
      "members":{
        "ServicePrincipal":{
          "shape":"ServicePrincipal",
          "documentation":"<p>The service principal of the Amazon Web Services service for the service-linked configuration recorder that you want to create.</p>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>The tags for a service-linked configuration recorder. Each tag consists of a key and an optional value, both of which you define.</p>"
        }
      }
    },
    "PutServiceLinkedConfigurationRecorderResponse":{
      "type":"structure",
      "members":{
        "Arn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) of the specified configuration recorder.</p>"
        },
        "Name":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the specified configuration recorder.</p> <p>For service-linked configuration recorders, Config automatically assigns a name that has the prefix \"<code>AWS</code>\" to the new service-linked configuration recorder.</p>"
        }
      }
    },
    "PutStoredQueryRequest":{
      "type":"structure",
      "required":["StoredQuery"],
      "members":{
        "StoredQuery":{
          "shape":"StoredQuery",
          "documentation":"<p>A list of <code>StoredQuery</code> objects. The mandatory fields are <code>QueryName</code> and <code>Expression</code>.</p> <note> <p>When you are creating a query, you must provide a query name and an expression. When you are updating a query, you must provide a query name but updating the description is optional.</p> </note>"
        },
        "Tags":{
          "shape":"TagsList",
          "documentation":"<p>A list of <code>Tags</code> object.</p>"
        }
      }
    },
    "PutStoredQueryResponse":{
      "type":"structure",
      "members":{
        "QueryArn":{
          "shape":"QueryArn",
          "documentation":"<p>Amazon Resource Name (ARN) of the query. For example, arn:partition:service:region:account-id:resource-type/resource-name/resource-id.</p>"
        }
      }
    },
    "QueryArn":{
      "type":"string",
      "max":500,
      "min":1,
      "pattern":"^arn:aws[a-z\\-]*:config:[a-z\\-\\d]+:\\d+:stored-query/[a-zA-Z0-9-_]+/query-[a-zA-Z\\d-_/]+$"
    },
    "QueryDescription":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"[\\s\\S]*"
    },
    "QueryExpression":{
      "type":"string",
      "max":4096,
      "min":1,
      "pattern":"[\\s\\S]*"
    },
    "QueryId":{
      "type":"string",
      "max":36,
      "min":1,
      "pattern":"^\\S+$"
    },
    "QueryInfo":{
      "type":"structure",
      "members":{
        "SelectFields":{
          "shape":"FieldInfoList",
          "documentation":"<p>Returns a <code>FieldInfo</code> object.</p>"
        }
      },
      "documentation":"<p>Details about the query.</p>"
    },
    "QueryName":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[a-zA-Z0-9-_]+$"
    },
    "RecorderName":{
      "type":"string",
      "max":256,
      "min":1
    },
    "RecorderStatus":{
      "type":"string",
      "enum":[
        "Pending",
        "Success",
        "Failure",
        "NotApplicable"
      ]
    },
    "RecordingFrequency":{
      "type":"string",
      "enum":[
        "CONTINUOUS",
        "DAILY"
      ]
    },
    "RecordingGroup":{
      "type":"structure",
      "members":{
        "allSupported":{
          "shape":"AllSupported",
          "documentation":"<p>Specifies whether Config records configuration changes for all supported resource types, excluding the global IAM resource types.</p> <p>If you set this field to <code>true</code>, when Config adds support for a new resource type, Config starts recording resources of that type automatically.</p> <p>If you set this field to <code>true</code>, you cannot enumerate specific resource types to record in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>, or to exclude in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ExclusionByResourceTypes.html\">ExclusionByResourceTypes</a>.</p> <note> <p> <b>Region availability</b> </p> <p>Check <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/what-is-resource-config-coverage.html\">Resource Coverage by Region Availability</a> to see if a resource type is supported in the Amazon Web Services Region where you set up Config.</p> </note>"
        },
        "includeGlobalResourceTypes":{
          "shape":"IncludeGlobalResourceTypes",
          "documentation":"<p>This option is a bundle which only applies to the global IAM resource types: IAM users, groups, roles, and customer managed policies. These global IAM resource types can only be recorded by Config in Regions where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. For a list of those Regions, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-all\">Recording Amazon Web Services Resources | Global Resources</a>.</p> <important> <p> <b>Aurora global clusters are recorded in all enabled Regions</b> </p> <p>The <code>AWS::RDS::GlobalCluster</code> resource type will be recorded in all supported Config Regions where the configuration recorder is enabled, even if <code>includeGlobalResourceTypes</code> is set<code>false</code>. The <code>includeGlobalResourceTypes</code> option is a bundle which only applies to IAM users, groups, roles, and customer managed policies. </p> <p>If you do not want to record <code>AWS::RDS::GlobalCluster</code> in all enabled Regions, use one of the following recording strategies:</p> <ol> <li> <p> <b>Record all current and future resource types with exclusions</b> (<code>EXCLUSION_BY_RESOURCE_TYPES</code>), or</p> </li> <li> <p> <b>Record specific resource types</b> (<code>INCLUSION_BY_RESOURCE_TYPES</code>).</p> </li> </ol> <p>For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-all\">Selecting Which Resources are Recorded</a> in the <i>Config developer guide</i>.</p> </important> <important> <p> <b>includeGlobalResourceTypes and the exclusion recording strategy</b> </p> <p>The <code>includeGlobalResourceTypes</code> field has no impact on the <code>EXCLUSION_BY_RESOURCE_TYPES</code> recording strategy. This means that the global IAM resource types (IAM users, groups, roles, and customer managed policies) will not be automatically added as exclusions for <code>exclusionByResourceTypes</code> when <code>includeGlobalResourceTypes</code> is set to <code>false</code>.</p> <p>The <code>includeGlobalResourceTypes</code> field should only be used to modify the <code>AllSupported</code> field, as the default for the <code>AllSupported</code> field is to record configuration changes for all supported resource types excluding the global IAM resource types. To include the global IAM resource types when <code>AllSupported</code> is set to <code>true</code>, make sure to set <code>includeGlobalResourceTypes</code> to <code>true</code>.</p> <p>To exclude the global IAM resource types for the <code>EXCLUSION_BY_RESOURCE_TYPES</code> recording strategy, you need to manually add them to the <code>resourceTypes</code> field of <code>exclusionByResourceTypes</code>.</p> </important> <note> <p> <b>Required and optional fields</b> </p> <p>Before you set this field to <code>true</code>, set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>. Optionally, you can set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>ALL_SUPPORTED_RESOURCE_TYPES</code>.</p> </note> <note> <p> <b>Overriding fields</b> </p> <p>If you set this field to <code>false</code> but list global IAM resource types in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>, Config will still record configuration changes for those specified resource types <i>regardless</i> of if you set the <code>includeGlobalResourceTypes</code> field to false.</p> <p>If you do not want to record configuration changes to the global IAM resource types (IAM users, groups, roles, and customer managed policies), make sure to not list them in the <code>resourceTypes</code> field in addition to setting the <code>includeGlobalResourceTypes</code> field to false.</p> </note>"
        },
        "resourceTypes":{
          "shape":"ResourceTypeList",
          "documentation":"<p>A comma-separated list that specifies which resource types Config records.</p> <p>For a list of valid <code>resourceTypes</code> values, see the <b>Resource Type Value</b> column in <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources\">Supported Amazon Web Services resource Types</a> in the <i>Config developer guide</i>.</p> <note> <p> <b>Required and optional fields</b> </p> <p>Optionally, you can set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>INCLUSION_BY_RESOURCE_TYPES</code>.</p> <p>To record all configuration changes, set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>, and either omit this field or don't specify any resource types in this field. If you set the <code>allSupported</code> field to <code>false</code> and specify values for <code>resourceTypes</code>, when Config adds support for a new type of resource, it will not record resources of that type unless you manually add that type to your recording group.</p> </note> <note> <p> <b>Region availability</b> </p> <p>Before specifying a resource type for Config to track, check <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/what-is-resource-config-coverage.html\">Resource Coverage by Region Availability</a> to see if the resource type is supported in the Amazon Web Services Region where you set up Config. If a resource type is supported by Config in at least one Region, you can enable the recording of that resource type in all Regions supported by Config, even if the specified resource type is not supported in the Amazon Web Services Region where you set up Config.</p> </note>"
        },
        "exclusionByResourceTypes":{
          "shape":"ExclusionByResourceTypes",
          "documentation":"<p>An object that specifies how Config excludes resource types from being recorded by the configuration recorder.</p> <note> <p> <b>Required fields</b> </p> <p>To use this option, you must set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>EXCLUSION_BY_RESOURCE_TYPES</code>.</p> </note>"
        },
        "recordingStrategy":{
          "shape":"RecordingStrategy",
          "documentation":"<p>An object that specifies the recording strategy for the configuration recorder.</p> <ul> <li> <p>If you set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>ALL_SUPPORTED_RESOURCE_TYPES</code>, Config records configuration changes for all supported resource types, excluding the global IAM resource types. You also must set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>. When Config adds support for a new resource type, Config automatically starts recording resources of that type.</p> </li> <li> <p>If you set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>INCLUSION_BY_RESOURCE_TYPES</code>, Config records configuration changes for only the resource types you specify in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>.</p> </li> <li> <p>If you set the <code>useOnly</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html\">RecordingStrategy</a> to <code>EXCLUSION_BY_RESOURCE_TYPES</code>, Config records configuration changes for all supported resource types except the resource types that you specify to exclude from being recorded in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ExclusionByResourceTypes.html\">ExclusionByResourceTypes</a>.</p> </li> </ul> <note> <p> <b>Required and optional fields</b> </p> <p>The <code>recordingStrategy</code> field is optional when you set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>.</p> <p>The <code>recordingStrategy</code> field is optional when you list resource types in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>.</p> <p>The <code>recordingStrategy</code> field is required if you list resource types to exclude from recording in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ExclusionByResourceTypes.html\">ExclusionByResourceTypes</a>.</p> </note> <note> <p> <b>Overriding fields</b> </p> <p>If you choose <code>EXCLUSION_BY_RESOURCE_TYPES</code> for the recording strategy, the <code>exclusionByResourceTypes</code> field will override other properties in the request.</p> <p>For example, even if you set <code>includeGlobalResourceTypes</code> to false, global IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the <code>resourceTypes</code> field of <code>exclusionByResourceTypes</code>.</p> </note> <note> <p> <b>Global resources types and the resource exclusion recording strategy</b> </p> <p>By default, if you choose the <code>EXCLUSION_BY_RESOURCE_TYPES</code> recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.</p> <p>Unless specifically listed as exclusions, <code>AWS::RDS::GlobalCluster</code> will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.</p> <p>IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. For a list of those Regions, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html#select-resources-all\">Recording Amazon Web Services Resources | Global Resources</a>.</p> </note>"
        }
      },
      "documentation":"<p>Specifies which resource types Config records for configuration changes. By default, Config records configuration changes for all current and future supported resource types in the Amazon Web Services Region where you have enabled Config, excluding the global IAM resource types: IAM users, groups, roles, and customer managed policies.</p> <p>In the recording group, you specify whether you want to record all supported current and future supported resource types or to include or exclude specific resources types. For a list of supported resource types, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources\">Supported Resource Types</a> in the <i>Config developer guide</i>.</p> <p>If you don't want Config to record all current and future supported resource types (excluding the global IAM resource types), use one of the following recording strategies:</p> <ol> <li> <p> <b>Record all current and future resource types with exclusions</b> (<code>EXCLUSION_BY_RESOURCE_TYPES</code>), or</p> </li> <li> <p> <b>Record specific resource types</b> (<code>INCLUSION_BY_RESOURCE_TYPES</code>).</p> </li> </ol> <p>If you use the recording strategy to <b>Record all current and future resource types</b> (<code>ALL_SUPPORTED_RESOURCE_TYPES</code>), you can use the flag <code>includeGlobalResourceTypes</code> to include the global IAM resource types in your recording.</p> <important> <p> <b>Aurora global clusters are recorded in all enabled Regions</b> </p> <p>The <code>AWS::RDS::GlobalCluster</code> resource type will be recorded in all supported Config Regions where the configuration recorder is enabled.</p> <p>If you do not want to record <code>AWS::RDS::GlobalCluster</code> in all enabled Regions, use the <code>EXCLUSION_BY_RESOURCE_TYPES</code> or <code>INCLUSION_BY_RESOURCE_TYPES</code> recording strategy.</p> </important>"
    },
    "RecordingMode":{
      "type":"structure",
      "required":["recordingFrequency"],
      "members":{
        "recordingFrequency":{
          "shape":"RecordingFrequency",
          "documentation":"<p>The default recording frequency that Config uses to record configuration changes.</p> <important> <p>Daily recording cannot be specified for the following resource types:</p> <ul> <li> <p> <code>AWS::Config::ResourceCompliance</code> </p> </li> <li> <p> <code>AWS::Config::ConformancePackCompliance</code> </p> </li> <li> <p> <code>AWS::Config::ConfigurationRecorder</code> </p> </li> </ul> <p>For the <b>allSupported</b> (<code>ALL_SUPPORTED_RESOURCE_TYPES</code>) recording strategy, these resource types will be set to Continuous recording.</p> </important>"
        },
        "recordingModeOverrides":{
          "shape":"RecordingModeOverrides",
          "documentation":"<p>An array of <code>recordingModeOverride</code> objects for you to specify your overrides for the recording mode. The <code>recordingModeOverride</code> object in the <code>recordingModeOverrides</code> array consists of three fields: a <code>description</code>, the new <code>recordingFrequency</code>, and an array of <code>resourceTypes</code> to override.</p>"
        }
      },
      "documentation":"<p>Specifies the default recording frequency that Config uses to record configuration changes. Config supports <i>Continuous recording</i> and <i>Daily recording</i>.</p> <ul> <li> <p>Continuous recording allows you to record configuration changes continuously whenever a change occurs.</p> </li> <li> <p>Daily recording allows you to receive a configuration item (CI) representing the most recent state of your resources over the last 24-hour period, only if it’s different from the previous CI recorded. </p> </li> </ul> <note> <p>Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.</p> </note> <p>You can also override the recording frequency for specific resource types.</p>"
    },
    "RecordingModeOverride":{
      "type":"structure",
      "required":[
        "resourceTypes",
        "recordingFrequency"
      ],
      "members":{
        "description":{
          "shape":"Description",
          "documentation":"<p>A description that you provide for the override.</p>"
        },
        "resourceTypes":{
          "shape":"RecordingModeResourceTypesList",
          "documentation":"<p>A comma-separated list that specifies which resource types Config includes in the override.</p> <important> <p>Daily recording cannot be specified for the following resource types:</p> <ul> <li> <p> <code>AWS::Config::ResourceCompliance</code> </p> </li> <li> <p> <code>AWS::Config::ConformancePackCompliance</code> </p> </li> <li> <p> <code>AWS::Config::ConfigurationRecorder</code> </p> </li> </ul> </important>"
        },
        "recordingFrequency":{
          "shape":"RecordingFrequency",
          "documentation":"<p>The recording frequency that will be applied to all the resource types specified in the override.</p> <ul> <li> <p>Continuous recording allows you to record configuration changes continuously whenever a change occurs.</p> </li> <li> <p>Daily recording allows you to receive a configuration item (CI) representing the most recent state of your resources over the last 24-hour period, only if it’s different from the previous CI recorded. </p> </li> </ul> <note> <p>Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.</p> </note>"
        }
      },
      "documentation":"<p>An object for you to specify your overrides for the recording mode.</p>"
    },
    "RecordingModeOverrides":{
      "type":"list",
      "member":{"shape":"RecordingModeOverride"},
      "max":1,
      "min":0
    },
    "RecordingModeResourceTypesList":{
      "type":"list",
      "member":{"shape":"ResourceType"}
    },
    "RecordingScope":{
      "type":"string",
      "enum":[
        "INTERNAL",
        "PAID"
      ]
    },
    "RecordingStrategy":{
      "type":"structure",
      "members":{
        "useOnly":{
          "shape":"RecordingStrategyType",
          "documentation":"<p>The recording strategy for the configuration recorder.</p> <ul> <li> <p>If you set this option to <code>ALL_SUPPORTED_RESOURCE_TYPES</code>, Config records configuration changes for all supported resource types, excluding the global IAM resource types. You also must set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>. When Config adds support for a new resource type, Config automatically starts recording resources of that type. For a list of supported resource types, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources\">Supported Resource Types</a> in the <i>Config developer guide</i>.</p> </li> <li> <p>If you set this option to <code>INCLUSION_BY_RESOURCE_TYPES</code>, Config records configuration changes for only the resource types that you specify in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>.</p> </li> <li> <p>If you set this option to <code>EXCLUSION_BY_RESOURCE_TYPES</code>, Config records configuration changes for all supported resource types, except the resource types that you specify to exclude from being recorded in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ExclusionByResourceTypes.html\">ExclusionByResourceTypes</a>.</p> </li> </ul> <note> <p> <b>Required and optional fields</b> </p> <p>The <code>recordingStrategy</code> field is optional when you set the <code>allSupported</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a> to <code>true</code>.</p> <p>The <code>recordingStrategy</code> field is optional when you list resource types in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html\">RecordingGroup</a>.</p> <p>The <code>recordingStrategy</code> field is required if you list resource types to exclude from recording in the <code>resourceTypes</code> field of <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_ExclusionByResourceTypes.html\">ExclusionByResourceTypes</a>.</p> </note> <note> <p> <b>Overriding fields</b> </p> <p>If you choose <code>EXCLUSION_BY_RESOURCE_TYPES</code> for the recording strategy, the <code>exclusionByResourceTypes</code> field will override other properties in the request.</p> <p>For example, even if you set <code>includeGlobalResourceTypes</code> to false, global IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the <code>resourceTypes</code> field of <code>exclusionByResourceTypes</code>.</p> </note> <note> <p> <b>Global resource types and the exclusion recording strategy</b> </p> <p>By default, if you choose the <code>EXCLUSION_BY_RESOURCE_TYPES</code> recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.</p> <p>Unless specifically listed as exclusions, <code>AWS::RDS::GlobalCluster</code> will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.</p> <p>IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. This list where you cannot record the global IAM resource types includes the following Regions:</p> <ul> <li> <p>Asia Pacific (Hyderabad)</p> </li> <li> <p>Asia Pacific (Melbourne)</p> </li> <li> <p>Canada West (Calgary)</p> </li> <li> <p>Europe (Spain)</p> </li> <li> <p>Europe (Zurich)</p> </li> <li> <p>Israel (Tel Aviv)</p> </li> <li> <p>Middle East (UAE)</p> </li> </ul> </note>"
        }
      },
      "documentation":"<p>Specifies the recording strategy of the configuration recorder.</p>"
    },
    "RecordingStrategyType":{
      "type":"string",
      "enum":[
        "ALL_SUPPORTED_RESOURCE_TYPES",
        "INCLUSION_BY_RESOURCE_TYPES",
        "EXCLUSION_BY_RESOURCE_TYPES"
      ]
    },
    "ReevaluateConfigRuleNames":{
      "type":"list",
      "member":{"shape":"ConfigRuleName"},
      "max":25,
      "min":1
    },
    "RelatedEvent":{"type":"string"},
    "RelatedEventList":{
      "type":"list",
      "member":{"shape":"RelatedEvent"}
    },
    "Relationship":{
      "type":"structure",
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The resource type of the related resource.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the related resource (for example, <code>sg-xxxxxx</code>).</p>"
        },
        "resourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The custom name of the related resource, if available.</p>"
        },
        "relationshipName":{
          "shape":"RelationshipName",
          "documentation":"<p>The type of relationship with the related resource.</p>"
        }
      },
      "documentation":"<p>The relationship of the related resource to the main resource.</p>"
    },
    "RelationshipList":{
      "type":"list",
      "member":{"shape":"Relationship"}
    },
    "RelationshipName":{"type":"string"},
    "RemediationConfiguration":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "TargetType",
        "TargetId"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "TargetType":{
          "shape":"RemediationTargetType",
          "documentation":"<p>The type of the target. Target executes remediation. For example, SSM document.</p>"
        },
        "TargetId":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>Target ID is the name of the SSM document.</p>"
        },
        "TargetVersion":{
          "shape":"String",
          "documentation":"<p>Version of the target. For example, version of the SSM document.</p> <note> <p>If you make backward incompatible changes to the SSM document, you must call PutRemediationConfiguration API again to ensure the remediations can run.</p> </note>"
        },
        "Parameters":{
          "shape":"RemediationParameters",
          "documentation":"<p>An object of the RemediationParameterValue.</p>"
        },
        "ResourceType":{
          "shape":"String",
          "documentation":"<p>The type of a resource. </p>"
        },
        "Automatic":{
          "shape":"Boolean",
          "documentation":"<p>The remediation is triggered automatically.</p>"
        },
        "ExecutionControls":{
          "shape":"ExecutionControls",
          "documentation":"<p>An ExecutionControls object.</p>"
        },
        "MaximumAutomaticAttempts":{
          "shape":"AutoRemediationAttempts",
          "documentation":"<p>The maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5.</p> <p>For example, if you specify MaximumAutomaticAttempts as 5 with RetryAttemptSeconds as 50 seconds, Config will put a RemediationException on your behalf for the failing resource after the 5th failed attempt within 50 seconds.</p>"
        },
        "RetryAttemptSeconds":{
          "shape":"AutoRemediationAttemptSeconds",
          "documentation":"<p>Time window to determine whether or not to add a remediation exception to prevent infinite remediation attempts. If <code>MaximumAutomaticAttempts</code> remediation attempts have been made under <code>RetryAttemptSeconds</code>, a remediation exception will be added to the resource. If you do not select a number, the default is 60 seconds. </p> <p>For example, if you specify <code>RetryAttemptSeconds</code> as 50 seconds and <code>MaximumAutomaticAttempts</code> as 5, Config will run auto-remediations 5 times within 50 seconds before adding a remediation exception to the resource.</p>"
        },
        "Arn":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>Amazon Resource Name (ARN) of remediation configuration.</p>"
        },
        "CreatedByService":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>Name of the service that owns the service-linked rule, if applicable.</p>"
        }
      },
      "documentation":"<p>An object that represents the details about the remediation configuration that includes the remediation action, parameters, and data to execute the action.</p>"
    },
    "RemediationConfigurations":{
      "type":"list",
      "member":{"shape":"RemediationConfiguration"},
      "max":25,
      "min":0
    },
    "RemediationException":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "ResourceType",
        "ResourceId"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The name of the Config rule.</p>"
        },
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of a resource.</p>"
        },
        "ResourceId":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>The ID of the resource (for example., sg-xxxxxx).</p>"
        },
        "Message":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>An explanation of an remediation exception.</p>"
        },
        "ExpirationTime":{
          "shape":"Date",
          "documentation":"<p>The time when the remediation exception will be deleted.</p>"
        }
      },
      "documentation":"<p>An object that represents the details about the remediation exception. The details include the rule name, an explanation of an exception, the time when the exception will be deleted, the resource ID, and resource type. </p>"
    },
    "RemediationExceptionResourceKey":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of a resource.</p>"
        },
        "ResourceId":{
          "shape":"StringWithCharLimit1024",
          "documentation":"<p>The ID of the resource (for example., sg-xxxxxx).</p>"
        }
      },
      "documentation":"<p>The details that identify a resource within Config, including the resource type and resource ID. </p>"
    },
    "RemediationExceptionResourceKeys":{
      "type":"list",
      "member":{"shape":"RemediationExceptionResourceKey"},
      "max":100,
      "min":1
    },
    "RemediationExceptions":{
      "type":"list",
      "member":{"shape":"RemediationException"},
      "max":25,
      "min":0
    },
    "RemediationExecutionState":{
      "type":"string",
      "enum":[
        "QUEUED",
        "IN_PROGRESS",
        "SUCCEEDED",
        "FAILED"
      ]
    },
    "RemediationExecutionStatus":{
      "type":"structure",
      "members":{
        "ResourceKey":{"shape":"ResourceKey"},
        "State":{
          "shape":"RemediationExecutionState",
          "documentation":"<p>ENUM of the values.</p>"
        },
        "StepDetails":{
          "shape":"RemediationExecutionSteps",
          "documentation":"<p>Details of every step.</p>"
        },
        "InvocationTime":{
          "shape":"Date",
          "documentation":"<p>Start time when the remediation was executed.</p>"
        },
        "LastUpdatedTime":{
          "shape":"Date",
          "documentation":"<p>The time when the remediation execution was last updated.</p>"
        }
      },
      "documentation":"<p>Provides details of the current status of the invoked remediation action for that resource.</p>"
    },
    "RemediationExecutionStatuses":{
      "type":"list",
      "member":{"shape":"RemediationExecutionStatus"}
    },
    "RemediationExecutionStep":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The details of the step.</p>"
        },
        "State":{
          "shape":"RemediationExecutionStepState",
          "documentation":"<p>The valid status of the step.</p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>An error message if the step was interrupted during execution.</p>"
        },
        "StartTime":{
          "shape":"Date",
          "documentation":"<p>The time when the step started.</p>"
        },
        "StopTime":{
          "shape":"Date",
          "documentation":"<p>The time when the step stopped.</p>"
        }
      },
      "documentation":"<p>Name of the step from the SSM document.</p>"
    },
    "RemediationExecutionStepState":{
      "type":"string",
      "enum":[
        "SUCCEEDED",
        "PENDING",
        "FAILED"
      ]
    },
    "RemediationExecutionSteps":{
      "type":"list",
      "member":{"shape":"RemediationExecutionStep"}
    },
    "RemediationInProgressException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>Remediation action is in progress. You can either cancel execution in Amazon Web Services Systems Manager or wait and try again later. </p>",
      "exception":true
    },
    "RemediationParameterValue":{
      "type":"structure",
      "members":{
        "ResourceValue":{
          "shape":"ResourceValue",
          "documentation":"<p>The value is dynamic and changes at run-time.</p>"
        },
        "StaticValue":{
          "shape":"StaticValue",
          "documentation":"<p>The value is static and does not change at run-time.</p>"
        }
      },
      "documentation":"<p>The value is either a dynamic (resource) value or a static value. You must select either a dynamic value or a static value.</p>"
    },
    "RemediationParameters":{
      "type":"map",
      "key":{"shape":"StringWithCharLimit256"},
      "value":{"shape":"RemediationParameterValue"},
      "max":25,
      "min":0
    },
    "RemediationTargetType":{
      "type":"string",
      "enum":["SSM_DOCUMENT"]
    },
    "ResourceConcurrentModificationException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>Two users are trying to modify the same query at the same time. Wait for a moment and try again.</p>",
      "exception":true
    },
    "ResourceConfiguration":{
      "type":"string",
      "max":51200,
      "min":1
    },
    "ResourceConfigurationSchemaType":{
      "type":"string",
      "enum":["CFN_RESOURCE_SCHEMA"]
    },
    "ResourceCount":{
      "type":"structure",
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The resource type (for example, <code>\"AWS::EC2::Instance\"</code>).</p>"
        },
        "count":{
          "shape":"Long",
          "documentation":"<p>The number of resources.</p>"
        }
      },
      "documentation":"<p>An object that contains the resource type and the number of resources.</p>"
    },
    "ResourceCountFilters":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the Amazon Web Services resource.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit ID of the account.</p>"
        },
        "Region":{
          "shape":"AwsRegion",
          "documentation":"<p>The region where the account is located.</p>"
        }
      },
      "documentation":"<p>Filters the resource count based on account ID, region, and resource type.</p>"
    },
    "ResourceCountGroupKey":{
      "type":"string",
      "enum":[
        "RESOURCE_TYPE",
        "ACCOUNT_ID",
        "AWS_REGION"
      ]
    },
    "ResourceCounts":{
      "type":"list",
      "member":{"shape":"ResourceCount"}
    },
    "ResourceCreationTime":{"type":"timestamp"},
    "ResourceDeletionTime":{"type":"timestamp"},
    "ResourceDetails":{
      "type":"structure",
      "required":[
        "ResourceId",
        "ResourceType",
        "ResourceConfiguration"
      ],
      "members":{
        "ResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>A unique resource ID for an evaluation.</p>"
        },
        "ResourceType":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The type of resource being evaluated.</p>"
        },
        "ResourceConfiguration":{
          "shape":"ResourceConfiguration",
          "documentation":"<p>The resource definition to be evaluated as per the resource configuration schema type.</p>"
        },
        "ResourceConfigurationSchemaType":{
          "shape":"ResourceConfigurationSchemaType",
          "documentation":"<p>The schema type of the resource configuration.</p> <note> <p>You can find the <a href=\"https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html\">Resource type schema</a>, or <code>CFN_RESOURCE_SCHEMA</code>, in \"<i>Amazon Web Services public extensions</i>\" within the CloudFormation registry or with the following CLI commmand: <code>aws cloudformation describe-type --type-name \"AWS::S3::Bucket\" --type RESOURCE</code>.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry.html#registry-view\">Managing extensions through the CloudFormation registry</a> and <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html\">Amazon Web Services resource and property types reference</a> in the CloudFormation User Guide.</p> </note>"
        }
      },
      "documentation":"<p>Returns information about the resource being evaluated.</p>"
    },
    "ResourceEvaluation":{
      "type":"structure",
      "members":{
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>The ResourceEvaluationId of a evaluation.</p>"
        },
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>The mode of an evaluation. The valid values are Detective or Proactive.</p>"
        },
        "EvaluationStartTimestamp":{
          "shape":"Date",
          "documentation":"<p>The starting time of an execution.</p>"
        }
      },
      "documentation":"<p>Returns details of a resource evaluation.</p>"
    },
    "ResourceEvaluationFilters":{
      "type":"structure",
      "members":{
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>Filters all resource evaluations results based on an evaluation mode.</p> <important> <p>Currently, <code>DECTECTIVE</code> is not supported as a valid value. Ignore other documentation stating otherwise.</p> </important>"
        },
        "TimeWindow":{
          "shape":"TimeWindow",
          "documentation":"<p>Returns a <code>TimeWindow</code> object.</p>"
        },
        "EvaluationContextIdentifier":{
          "shape":"EvaluationContextIdentifier",
          "documentation":"<p>Filters evaluations for a given infrastructure deployment. For example: CFN Stack.</p>"
        }
      },
      "documentation":"<p>Returns details of a resource evaluation based on the selected filter.</p>"
    },
    "ResourceEvaluationId":{
      "type":"string",
      "max":128,
      "min":1
    },
    "ResourceEvaluationStatus":{
      "type":"string",
      "enum":[
        "IN_PROGRESS",
        "FAILED",
        "SUCCEEDED"
      ]
    },
    "ResourceEvaluations":{
      "type":"list",
      "member":{"shape":"ResourceEvaluation"}
    },
    "ResourceFilters":{
      "type":"structure",
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit source account ID.</p>"
        },
        "ResourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource.</p>"
        },
        "ResourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The name of the resource.</p>"
        },
        "Region":{
          "shape":"AwsRegion",
          "documentation":"<p>The source region.</p>"
        }
      },
      "documentation":"<p>Filters the results by resource account ID, region, resource ID, and resource name.</p>"
    },
    "ResourceId":{
      "type":"string",
      "max":768,
      "min":1
    },
    "ResourceIdList":{
      "type":"list",
      "member":{"shape":"ResourceId"}
    },
    "ResourceIdentifier":{
      "type":"structure",
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resource.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource (for example, <code>sg-xxxxxx</code>).</p>"
        },
        "resourceName":{
          "shape":"ResourceName",
          "documentation":"<p>The custom name of the resource (if available).</p>"
        },
        "resourceDeletionTime":{
          "shape":"ResourceDeletionTime",
          "documentation":"<p>The time that the resource was deleted.</p>"
        }
      },
      "documentation":"<p>The details that identify a resource that is discovered by Config, including the resource type, ID, and (if available) the custom resource name.</p>"
    },
    "ResourceIdentifierList":{
      "type":"list",
      "member":{"shape":"ResourceIdentifier"}
    },
    "ResourceIdentifiersList":{
      "type":"list",
      "member":{"shape":"AggregateResourceIdentifier"},
      "max":100,
      "min":1
    },
    "ResourceInUseException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You see this exception in the following cases: </p> <ul> <li> <p>For DeleteConfigRule, Config is deleting this rule. Try your request again later.</p> </li> <li> <p>For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later.</p> </li> <li> <p>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.</p> </li> <li> <p>For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again later.</p> </li> <li> <p>For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request again later.</p> </li> <li> <p>For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p> </li> <li> <p>For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p> </li> </ul>",
      "exception":true
    },
    "ResourceKey":{
      "type":"structure",
      "required":[
        "resourceType",
        "resourceId"
      ],
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The resource type.</p>"
        },
        "resourceId":{
          "shape":"ResourceId",
          "documentation":"<p>The ID of the resource (for example., sg-xxxxxx). </p>"
        }
      },
      "documentation":"<p>The details that identify a resource within Config, including the resource type and resource ID.</p>"
    },
    "ResourceKeys":{
      "type":"list",
      "member":{"shape":"ResourceKey"},
      "max":100,
      "min":1
    },
    "ResourceName":{"type":"string"},
    "ResourceNotDiscoveredException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a resource that is either unknown or has not been discovered.</p>",
      "exception":true
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have specified a resource that does not exist.</p>",
      "exception":true
    },
    "ResourceType":{
      "type":"string",
      "enum":[
        "AWS::EC2::CustomerGateway",
        "AWS::EC2::EIP",
        "AWS::EC2::Host",
        "AWS::EC2::Instance",
        "AWS::EC2::InternetGateway",
        "AWS::EC2::NetworkAcl",
        "AWS::EC2::NetworkInterface",
        "AWS::EC2::RouteTable",
        "AWS::EC2::SecurityGroup",
        "AWS::EC2::Subnet",
        "AWS::CloudTrail::Trail",
        "AWS::EC2::Volume",
        "AWS::EC2::VPC",
        "AWS::EC2::VPNConnection",
        "AWS::EC2::VPNGateway",
        "AWS::EC2::RegisteredHAInstance",
        "AWS::EC2::NatGateway",
        "AWS::EC2::EgressOnlyInternetGateway",
        "AWS::EC2::VPCEndpoint",
        "AWS::EC2::VPCEndpointService",
        "AWS::EC2::FlowLog",
        "AWS::EC2::VPCPeeringConnection",
        "AWS::Elasticsearch::Domain",
        "AWS::IAM::Group",
        "AWS::IAM::Policy",
        "AWS::IAM::Role",
        "AWS::IAM::User",
        "AWS::ElasticLoadBalancingV2::LoadBalancer",
        "AWS::ACM::Certificate",
        "AWS::RDS::DBInstance",
        "AWS::RDS::DBSubnetGroup",
        "AWS::RDS::DBSecurityGroup",
        "AWS::RDS::DBSnapshot",
        "AWS::RDS::DBCluster",
        "AWS::RDS::DBClusterSnapshot",
        "AWS::RDS::EventSubscription",
        "AWS::S3::Bucket",
        "AWS::S3::AccountPublicAccessBlock",
        "AWS::Redshift::Cluster",
        "AWS::Redshift::ClusterSnapshot",
        "AWS::Redshift::ClusterParameterGroup",
        "AWS::Redshift::ClusterSecurityGroup",
        "AWS::Redshift::ClusterSubnetGroup",
        "AWS::Redshift::EventSubscription",
        "AWS::SSM::ManagedInstanceInventory",
        "AWS::CloudWatch::Alarm",
        "AWS::CloudFormation::Stack",
        "AWS::ElasticLoadBalancing::LoadBalancer",
        "AWS::AutoScaling::AutoScalingGroup",
        "AWS::AutoScaling::LaunchConfiguration",
        "AWS::AutoScaling::ScalingPolicy",
        "AWS::AutoScaling::ScheduledAction",
        "AWS::DynamoDB::Table",
        "AWS::CodeBuild::Project",
        "AWS::WAF::RateBasedRule",
        "AWS::WAF::Rule",
        "AWS::WAF::RuleGroup",
        "AWS::WAF::WebACL",
        "AWS::WAFRegional::RateBasedRule",
        "AWS::WAFRegional::Rule",
        "AWS::WAFRegional::RuleGroup",
        "AWS::WAFRegional::WebACL",
        "AWS::CloudFront::Distribution",
        "AWS::CloudFront::StreamingDistribution",
        "AWS::Lambda::Function",
        "AWS::NetworkFirewall::Firewall",
        "AWS::NetworkFirewall::FirewallPolicy",
        "AWS::NetworkFirewall::RuleGroup",
        "AWS::ElasticBeanstalk::Application",
        "AWS::ElasticBeanstalk::ApplicationVersion",
        "AWS::ElasticBeanstalk::Environment",
        "AWS::WAFv2::WebACL",
        "AWS::WAFv2::RuleGroup",
        "AWS::WAFv2::IPSet",
        "AWS::WAFv2::RegexPatternSet",
        "AWS::WAFv2::ManagedRuleSet",
        "AWS::XRay::EncryptionConfig",
        "AWS::SSM::AssociationCompliance",
        "AWS::SSM::PatchCompliance",
        "AWS::Shield::Protection",
        "AWS::ShieldRegional::Protection",
        "AWS::Config::ConformancePackCompliance",
        "AWS::Config::ResourceCompliance",
        "AWS::ApiGateway::Stage",
        "AWS::ApiGateway::RestApi",
        "AWS::ApiGatewayV2::Stage",
        "AWS::ApiGatewayV2::Api",
        "AWS::CodePipeline::Pipeline",
        "AWS::ServiceCatalog::CloudFormationProvisionedProduct",
        "AWS::ServiceCatalog::CloudFormationProduct",
        "AWS::ServiceCatalog::Portfolio",
        "AWS::SQS::Queue",
        "AWS::KMS::Key",
        "AWS::QLDB::Ledger",
        "AWS::SecretsManager::Secret",
        "AWS::SNS::Topic",
        "AWS::SSM::FileData",
        "AWS::Backup::BackupPlan",
        "AWS::Backup::BackupSelection",
        "AWS::Backup::BackupVault",
        "AWS::Backup::RecoveryPoint",
        "AWS::ECR::Repository",
        "AWS::ECS::Cluster",
        "AWS::ECS::Service",
        "AWS::ECS::TaskDefinition",
        "AWS::EFS::AccessPoint",
        "AWS::EFS::FileSystem",
        "AWS::EKS::Cluster",
        "AWS::OpenSearch::Domain",
        "AWS::EC2::TransitGateway",
        "AWS::Kinesis::Stream",
        "AWS::Kinesis::StreamConsumer",
        "AWS::CodeDeploy::Application",
        "AWS::CodeDeploy::DeploymentConfig",
        "AWS::CodeDeploy::DeploymentGroup",
        "AWS::EC2::LaunchTemplate",
        "AWS::ECR::PublicRepository",
        "AWS::GuardDuty::Detector",
        "AWS::EMR::SecurityConfiguration",
        "AWS::SageMaker::CodeRepository",
        "AWS::Route53Resolver::ResolverEndpoint",
        "AWS::Route53Resolver::ResolverRule",
        "AWS::Route53Resolver::ResolverRuleAssociation",
        "AWS::DMS::ReplicationSubnetGroup",
        "AWS::DMS::EventSubscription",
        "AWS::MSK::Cluster",
        "AWS::StepFunctions::Activity",
        "AWS::WorkSpaces::Workspace",
        "AWS::WorkSpaces::ConnectionAlias",
        "AWS::SageMaker::Model",
        "AWS::ElasticLoadBalancingV2::Listener",
        "AWS::StepFunctions::StateMachine",
        "AWS::Batch::JobQueue",
        "AWS::Batch::ComputeEnvironment",
        "AWS::AccessAnalyzer::Analyzer",
        "AWS::Athena::WorkGroup",
        "AWS::Athena::DataCatalog",
        "AWS::Detective::Graph",
        "AWS::GlobalAccelerator::Accelerator",
        "AWS::GlobalAccelerator::EndpointGroup",
        "AWS::GlobalAccelerator::Listener",
        "AWS::EC2::TransitGatewayAttachment",
        "AWS::EC2::TransitGatewayRouteTable",
        "AWS::DMS::Certificate",
        "AWS::AppConfig::Application",
        "AWS::AppSync::GraphQLApi",
        "AWS::DataSync::LocationSMB",
        "AWS::DataSync::LocationFSxLustre",
        "AWS::DataSync::LocationS3",
        "AWS::DataSync::LocationEFS",
        "AWS::DataSync::Task",
        "AWS::DataSync::LocationNFS",
        "AWS::EC2::NetworkInsightsAccessScopeAnalysis",
        "AWS::EKS::FargateProfile",
        "AWS::Glue::Job",
        "AWS::GuardDuty::ThreatIntelSet",
        "AWS::GuardDuty::IPSet",
        "AWS::SageMaker::Workteam",
        "AWS::SageMaker::NotebookInstanceLifecycleConfig",
        "AWS::ServiceDiscovery::Service",
        "AWS::ServiceDiscovery::PublicDnsNamespace",
        "AWS::SES::ContactList",
        "AWS::SES::ConfigurationSet",
        "AWS::Route53::HostedZone",
        "AWS::IoTEvents::Input",
        "AWS::IoTEvents::DetectorModel",
        "AWS::IoTEvents::AlarmModel",
        "AWS::ServiceDiscovery::HttpNamespace",
        "AWS::Events::EventBus",
        "AWS::ImageBuilder::ContainerRecipe",
        "AWS::ImageBuilder::DistributionConfiguration",
        "AWS::ImageBuilder::InfrastructureConfiguration",
        "AWS::DataSync::LocationObjectStorage",
        "AWS::DataSync::LocationHDFS",
        "AWS::Glue::Classifier",
        "AWS::Route53RecoveryReadiness::Cell",
        "AWS::Route53RecoveryReadiness::ReadinessCheck",
        "AWS::ECR::RegistryPolicy",
        "AWS::Backup::ReportPlan",
        "AWS::Lightsail::Certificate",
        "AWS::RUM::AppMonitor",
        "AWS::Events::Endpoint",
        "AWS::SES::ReceiptRuleSet",
        "AWS::Events::Archive",
        "AWS::Events::ApiDestination",
        "AWS::Lightsail::Disk",
        "AWS::FIS::ExperimentTemplate",
        "AWS::DataSync::LocationFSxWindows",
        "AWS::SES::ReceiptFilter",
        "AWS::GuardDuty::Filter",
        "AWS::SES::Template",
        "AWS::AmazonMQ::Broker",
        "AWS::AppConfig::Environment",
        "AWS::AppConfig::ConfigurationProfile",
        "AWS::Cloud9::EnvironmentEC2",
        "AWS::EventSchemas::Registry",
        "AWS::EventSchemas::RegistryPolicy",
        "AWS::EventSchemas::Discoverer",
        "AWS::FraudDetector::Label",
        "AWS::FraudDetector::EntityType",
        "AWS::FraudDetector::Variable",
        "AWS::FraudDetector::Outcome",
        "AWS::IoT::Authorizer",
        "AWS::IoT::SecurityProfile",
        "AWS::IoT::RoleAlias",
        "AWS::IoT::Dimension",
        "AWS::IoTAnalytics::Datastore",
        "AWS::Lightsail::Bucket",
        "AWS::Lightsail::StaticIp",
        "AWS::MediaPackage::PackagingGroup",
        "AWS::Route53RecoveryReadiness::RecoveryGroup",
        "AWS::ResilienceHub::ResiliencyPolicy",
        "AWS::Transfer::Workflow",
        "AWS::EKS::IdentityProviderConfig",
        "AWS::EKS::Addon",
        "AWS::Glue::MLTransform",
        "AWS::IoT::Policy",
        "AWS::IoT::MitigationAction",
        "AWS::IoTTwinMaker::Workspace",
        "AWS::IoTTwinMaker::Entity",
        "AWS::IoTAnalytics::Dataset",
        "AWS::IoTAnalytics::Pipeline",
        "AWS::IoTAnalytics::Channel",
        "AWS::IoTSiteWise::Dashboard",
        "AWS::IoTSiteWise::Project",
        "AWS::IoTSiteWise::Portal",
        "AWS::IoTSiteWise::AssetModel",
        "AWS::IVS::Channel",
        "AWS::IVS::RecordingConfiguration",
        "AWS::IVS::PlaybackKeyPair",
        "AWS::KinesisAnalyticsV2::Application",
        "AWS::RDS::GlobalCluster",
        "AWS::S3::MultiRegionAccessPoint",
        "AWS::DeviceFarm::TestGridProject",
        "AWS::Budgets::BudgetsAction",
        "AWS::Lex::Bot",
        "AWS::CodeGuruReviewer::RepositoryAssociation",
        "AWS::IoT::CustomMetric",
        "AWS::Route53Resolver::FirewallDomainList",
        "AWS::RoboMaker::RobotApplicationVersion",
        "AWS::EC2::TrafficMirrorSession",
        "AWS::IoTSiteWise::Gateway",
        "AWS::Lex::BotAlias",
        "AWS::LookoutMetrics::Alert",
        "AWS::IoT::AccountAuditConfiguration",
        "AWS::EC2::TrafficMirrorTarget",
        "AWS::S3::StorageLens",
        "AWS::IoT::ScheduledAudit",
        "AWS::Events::Connection",
        "AWS::EventSchemas::Schema",
        "AWS::MediaPackage::PackagingConfiguration",
        "AWS::KinesisVideo::SignalingChannel",
        "AWS::AppStream::DirectoryConfig",
        "AWS::LookoutVision::Project",
        "AWS::Route53RecoveryControl::Cluster",
        "AWS::Route53RecoveryControl::SafetyRule",
        "AWS::Route53RecoveryControl::ControlPanel",
        "AWS::Route53RecoveryControl::RoutingControl",
        "AWS::Route53RecoveryReadiness::ResourceSet",
        "AWS::RoboMaker::SimulationApplication",
        "AWS::RoboMaker::RobotApplication",
        "AWS::HealthLake::FHIRDatastore",
        "AWS::Pinpoint::Segment",
        "AWS::Pinpoint::ApplicationSettings",
        "AWS::Events::Rule",
        "AWS::EC2::DHCPOptions",
        "AWS::EC2::NetworkInsightsPath",
        "AWS::EC2::TrafficMirrorFilter",
        "AWS::EC2::IPAM",
        "AWS::IoTTwinMaker::Scene",
        "AWS::NetworkManager::TransitGatewayRegistration",
        "AWS::CustomerProfiles::Domain",
        "AWS::AutoScaling::WarmPool",
        "AWS::Connect::PhoneNumber",
        "AWS::AppConfig::DeploymentStrategy",
        "AWS::AppFlow::Flow",
        "AWS::AuditManager::Assessment",
        "AWS::CloudWatch::MetricStream",
        "AWS::DeviceFarm::InstanceProfile",
        "AWS::DeviceFarm::Project",
        "AWS::EC2::EC2Fleet",
        "AWS::EC2::SubnetRouteTableAssociation",
        "AWS::ECR::PullThroughCacheRule",
        "AWS::GroundStation::Config",
        "AWS::ImageBuilder::ImagePipeline",
        "AWS::IoT::FleetMetric",
        "AWS::IoTWireless::ServiceProfile",
        "AWS::NetworkManager::Device",
        "AWS::NetworkManager::GlobalNetwork",
        "AWS::NetworkManager::Link",
        "AWS::NetworkManager::Site",
        "AWS::Panorama::Package",
        "AWS::Pinpoint::App",
        "AWS::Redshift::ScheduledAction",
        "AWS::Route53Resolver::FirewallRuleGroupAssociation",
        "AWS::SageMaker::AppImageConfig",
        "AWS::SageMaker::Image",
        "AWS::ECS::TaskSet",
        "AWS::Cassandra::Keyspace",
        "AWS::Signer::SigningProfile",
        "AWS::Amplify::App",
        "AWS::AppMesh::VirtualNode",
        "AWS::AppMesh::VirtualService",
        "AWS::AppRunner::VpcConnector",
        "AWS::AppStream::Application",
        "AWS::CodeArtifact::Repository",
        "AWS::EC2::PrefixList",
        "AWS::EC2::SpotFleet",
        "AWS::Evidently::Project",
        "AWS::Forecast::Dataset",
        "AWS::IAM::SAMLProvider",
        "AWS::IAM::ServerCertificate",
        "AWS::Pinpoint::Campaign",
        "AWS::Pinpoint::InAppTemplate",
        "AWS::SageMaker::Domain",
        "AWS::Transfer::Agreement",
        "AWS::Transfer::Connector",
        "AWS::KinesisFirehose::DeliveryStream",
        "AWS::Amplify::Branch",
        "AWS::AppIntegrations::EventIntegration",
        "AWS::AppMesh::Route",
        "AWS::Athena::PreparedStatement",
        "AWS::EC2::IPAMScope",
        "AWS::Evidently::Launch",
        "AWS::Forecast::DatasetGroup",
        "AWS::GreengrassV2::ComponentVersion",
        "AWS::GroundStation::MissionProfile",
        "AWS::MediaConnect::FlowEntitlement",
        "AWS::MediaConnect::FlowVpcInterface",
        "AWS::MediaTailor::PlaybackConfiguration",
        "AWS::MSK::Configuration",
        "AWS::Personalize::Dataset",
        "AWS::Personalize::Schema",
        "AWS::Personalize::Solution",
        "AWS::Pinpoint::EmailTemplate",
        "AWS::Pinpoint::EventStream",
        "AWS::ResilienceHub::App",
        "AWS::ACMPCA::CertificateAuthority",
        "AWS::AppConfig::HostedConfigurationVersion",
        "AWS::AppMesh::VirtualGateway",
        "AWS::AppMesh::VirtualRouter",
        "AWS::AppRunner::Service",
        "AWS::CustomerProfiles::ObjectType",
        "AWS::DMS::Endpoint",
        "AWS::EC2::CapacityReservation",
        "AWS::EC2::ClientVpnEndpoint",
        "AWS::Kendra::Index",
        "AWS::KinesisVideo::Stream",
        "AWS::Logs::Destination",
        "AWS::Pinpoint::EmailChannel",
        "AWS::S3::AccessPoint",
        "AWS::NetworkManager::CustomerGatewayAssociation",
        "AWS::NetworkManager::LinkAssociation",
        "AWS::IoTWireless::MulticastGroup",
        "AWS::Personalize::DatasetGroup",
        "AWS::IoTTwinMaker::ComponentType",
        "AWS::CodeBuild::ReportGroup",
        "AWS::SageMaker::FeatureGroup",
        "AWS::MSK::BatchScramSecret",
        "AWS::AppStream::Stack",
        "AWS::IoT::JobTemplate",
        "AWS::IoTWireless::FuotaTask",
        "AWS::IoT::ProvisioningTemplate",
        "AWS::InspectorV2::Filter",
        "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation",
        "AWS::ServiceDiscovery::Instance",
        "AWS::Transfer::Certificate",
        "AWS::MediaConnect::FlowSource",
        "AWS::APS::RuleGroupsNamespace",
        "AWS::CodeGuruProfiler::ProfilingGroup",
        "AWS::Route53Resolver::ResolverQueryLoggingConfig",
        "AWS::Batch::SchedulingPolicy",
        "AWS::ACMPCA::CertificateAuthorityActivation",
        "AWS::AppMesh::GatewayRoute",
        "AWS::AppMesh::Mesh",
        "AWS::Connect::Instance",
        "AWS::Connect::QuickConnect",
        "AWS::EC2::CarrierGateway",
        "AWS::EC2::IPAMPool",
        "AWS::EC2::TransitGatewayConnect",
        "AWS::EC2::TransitGatewayMulticastDomain",
        "AWS::ECS::CapacityProvider",
        "AWS::IAM::InstanceProfile",
        "AWS::IoT::CACertificate",
        "AWS::IoTTwinMaker::SyncJob",
        "AWS::KafkaConnect::Connector",
        "AWS::Lambda::CodeSigningConfig",
        "AWS::NetworkManager::ConnectPeer",
        "AWS::ResourceExplorer2::Index",
        "AWS::AppStream::Fleet",
        "AWS::Cognito::UserPool",
        "AWS::Cognito::UserPoolClient",
        "AWS::Cognito::UserPoolGroup",
        "AWS::EC2::NetworkInsightsAccessScope",
        "AWS::EC2::NetworkInsightsAnalysis",
        "AWS::Grafana::Workspace",
        "AWS::GroundStation::DataflowEndpointGroup",
        "AWS::ImageBuilder::ImageRecipe",
        "AWS::KMS::Alias",
        "AWS::M2::Environment",
        "AWS::QuickSight::DataSource",
        "AWS::QuickSight::Template",
        "AWS::QuickSight::Theme",
        "AWS::RDS::OptionGroup",
        "AWS::Redshift::EndpointAccess",
        "AWS::Route53Resolver::FirewallRuleGroup",
        "AWS::SSM::Document"
      ]
    },
    "ResourceTypeList":{
      "type":"list",
      "member":{"shape":"ResourceType"}
    },
    "ResourceTypeString":{
      "type":"string",
      "max":196,
      "min":1
    },
    "ResourceTypeValue":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}"
    },
    "ResourceTypeValueList":{
      "type":"list",
      "member":{"shape":"ResourceTypeValue"}
    },
    "ResourceTypes":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit256"},
      "max":20,
      "min":0
    },
    "ResourceTypesScope":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit256"},
      "max":100,
      "min":0
    },
    "ResourceValue":{
      "type":"structure",
      "required":["Value"],
      "members":{
        "Value":{
          "shape":"ResourceValueType",
          "documentation":"<p>The value is a resource ID.</p>"
        }
      },
      "documentation":"<p>The dynamic value of the resource.</p>"
    },
    "ResourceValueType":{
      "type":"string",
      "enum":["RESOURCE_ID"]
    },
    "Results":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "RetentionConfiguration":{
      "type":"structure",
      "required":[
        "Name",
        "RetentionPeriodInDays"
      ],
      "members":{
        "Name":{
          "shape":"RetentionConfigurationName",
          "documentation":"<p>The name of the retention configuration object.</p>"
        },
        "RetentionPeriodInDays":{
          "shape":"RetentionPeriodInDays",
          "documentation":"<p>Number of days Config stores your historical information.</p> <note> <p>Currently, only applicable to the configuration item history.</p> </note>"
        }
      },
      "documentation":"<p>An object with the name of the retention configuration and the retention period in days. The object stores the configuration for data retention in Config.</p>"
    },
    "RetentionConfigurationList":{
      "type":"list",
      "member":{"shape":"RetentionConfiguration"}
    },
    "RetentionConfigurationName":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[\\w\\-]+"
    },
    "RetentionConfigurationNameList":{
      "type":"list",
      "member":{"shape":"RetentionConfigurationName"},
      "max":1,
      "min":0
    },
    "RetentionPeriodInDays":{
      "type":"integer",
      "max":2557,
      "min":30
    },
    "RuleLimit":{
      "type":"integer",
      "max":50,
      "min":0
    },
    "SSMDocumentName":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9_\\-.:/]{3,200}$"
    },
    "SSMDocumentVersion":{
      "type":"string",
      "pattern":"([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)"
    },
    "SchemaVersionId":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[A-Za-z0-9-]+"
    },
    "Scope":{
      "type":"structure",
      "members":{
        "ComplianceResourceTypes":{
          "shape":"ComplianceResourceTypes",
          "documentation":"<p>The resource types of only those Amazon Web Services resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for <code>ComplianceResourceId</code>.</p>"
        },
        "TagKey":{
          "shape":"StringWithCharLimit128",
          "documentation":"<p>The tag key that is applied to only those Amazon Web Services resources that you want to trigger an evaluation for the rule.</p>"
        },
        "TagValue":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>The tag value applied to only those Amazon Web Services resources that you want to trigger an evaluation for the rule. If you specify a value for <code>TagValue</code>, you must also specify a value for <code>TagKey</code>.</p>"
        },
        "ComplianceResourceId":{
          "shape":"BaseResourceId",
          "documentation":"<p>The ID of the only Amazon Web Services resource that you want to trigger an evaluation for the rule. If you specify a resource ID, you must specify one resource type for <code>ComplianceResourceTypes</code>.</p>"
        }
      },
      "documentation":"<p>Defines which resources trigger an evaluation for an Config rule. The scope can include one or more resource types, a combination of a tag key and value, or a combination of one resource type and one resource ID. Specify a scope to constrain which resources trigger an evaluation for a rule. Otherwise, evaluations for the rule are triggered when any resource in your recording group changes in configuration.</p>"
    },
    "SelectAggregateResourceConfigRequest":{
      "type":"structure",
      "required":[
        "Expression",
        "ConfigurationAggregatorName"
      ],
      "members":{
        "Expression":{
          "shape":"Expression",
          "documentation":"<p>The SQL query SELECT command. </p>"
        },
        "ConfigurationAggregatorName":{
          "shape":"ConfigurationAggregatorName",
          "documentation":"<p>The name of the configuration aggregator.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of query results returned on each page. </p>"
        },
        "MaxResults":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of query results returned on each page. Config also allows the Limit request parameter.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The nextToken string returned in a previous request that you use to request the next page of results in a paginated response. </p>"
        }
      }
    },
    "SelectAggregateResourceConfigResponse":{
      "type":"structure",
      "members":{
        "Results":{
          "shape":"Results",
          "documentation":"<p>Returns the results for the SQL query.</p>"
        },
        "QueryInfo":{"shape":"QueryInfo"},
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The nextToken string returned in a previous request that you use to request the next page of results in a paginated response. </p>"
        }
      }
    },
    "SelectResourceConfigRequest":{
      "type":"structure",
      "required":["Expression"],
      "members":{
        "Expression":{
          "shape":"Expression",
          "documentation":"<p>The SQL query <code>SELECT</code> command.</p>"
        },
        "Limit":{
          "shape":"Limit",
          "documentation":"<p>The maximum number of query results returned on each page. </p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response. </p>"
        }
      }
    },
    "SelectResourceConfigResponse":{
      "type":"structure",
      "members":{
        "Results":{
          "shape":"Results",
          "documentation":"<p>Returns the results for the SQL query.</p>"
        },
        "QueryInfo":{
          "shape":"QueryInfo",
          "documentation":"<p>Returns the <code>QueryInfo</code> object.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The <code>nextToken</code> string returned in a previous request that you use to request the next page of results in a paginated response. </p>"
        }
      }
    },
    "ServicePrincipal":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[\\w+=,.@-]+"
    },
    "ServicePrincipalValue":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[\\w+=,.@-]+"
    },
    "ServicePrincipalValueList":{
      "type":"list",
      "member":{"shape":"ServicePrincipalValue"}
    },
    "SortBy":{
      "type":"string",
      "enum":["SCORE"]
    },
    "SortOrder":{
      "type":"string",
      "enum":[
        "ASCENDING",
        "DESCENDING"
      ]
    },
    "Source":{
      "type":"structure",
      "required":["Owner"],
      "members":{
        "Owner":{
          "shape":"Owner",
          "documentation":"<p>Indicates whether Amazon Web Services or the customer owns and manages the Config rule.</p> <p>Config Managed Rules are predefined rules owned by Amazon Web Services. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html\">Config Managed Rules</a> in the <i>Config developer guide</i>.</p> <p>Config Custom Rules are rules that you can develop either with Guard (<code>CUSTOM_POLICY</code>) or Lambda (<code>CUSTOM_LAMBDA</code>). For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html\">Config Custom Rules </a> in the <i>Config developer guide</i>.</p>"
        },
        "SourceIdentifier":{
          "shape":"StringWithCharLimit256",
          "documentation":"<p>For Config Managed rules, a predefined identifier from a list. For example, <code>IAM_PASSWORD_POLICY</code> is a managed rule. To reference a managed rule, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html\">List of Config Managed Rules</a>.</p> <p>For Config Custom Lambda rules, the identifier is the Amazon Resource Name (ARN) of the rule's Lambda function, such as <code>arn:aws:lambda:us-east-2:123456789012:function:custom_rule_name</code>.</p> <p>For Config Custom Policy rules, this field will be ignored.</p>"
        },
        "SourceDetails":{
          "shape":"SourceDetails",
          "documentation":"<p>Provides the source and the message types that cause Config to evaluate your Amazon Web Services resources against a rule. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic.</p> <p>If the owner is set to <code>CUSTOM_POLICY</code>, the only acceptable values for the Config rule trigger message type are <code>ConfigurationItemChangeNotification</code> and <code>OversizedConfigurationItemChangeNotification</code>.</p>"
        },
        "CustomPolicyDetails":{
          "shape":"CustomPolicyDetails",
          "documentation":"<p>Provides the runtime system, policy definition, and whether debug logging is enabled. Required when owner is set to <code>CUSTOM_POLICY</code>.</p>"
        }
      },
      "documentation":"<p>Provides the CustomPolicyDetails, the rule owner (<code>Amazon Web Services</code> for managed rules, <code>CUSTOM_POLICY</code> for Custom Policy rules, and <code>CUSTOM_LAMBDA</code> for Custom Lambda rules), the rule identifier, and the events that cause the evaluation of your Amazon Web Services resources.</p>"
    },
    "SourceDetail":{
      "type":"structure",
      "members":{
        "EventSource":{
          "shape":"EventSource",
          "documentation":"<p>The source of the event, such as an Amazon Web Services service, that triggers Config to evaluate your Amazon Web Services resources.</p>"
        },
        "MessageType":{
          "shape":"MessageType",
          "documentation":"<p>The type of notification that triggers Config to run an evaluation for a rule. You can specify the following notification types:</p> <ul> <li> <p> <code>ConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers a configuration item as a result of a resource change.</p> </li> <li> <p> <code>OversizedConfigurationItemChangeNotification</code> - Triggers an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.</p> </li> <li> <p> <code>ScheduledNotification</code> - Triggers a periodic evaluation at the frequency specified for <code>MaximumExecutionFrequency</code>.</p> </li> <li> <p> <code>ConfigurationSnapshotDeliveryCompleted</code> - Triggers a periodic evaluation when Config delivers a configuration snapshot.</p> </li> </ul> <p>If you want your custom rule to be triggered by configuration changes, specify two SourceDetail objects, one for <code>ConfigurationItemChangeNotification</code> and one for <code>OversizedConfigurationItemChangeNotification</code>.</p>"
        },
        "MaximumExecutionFrequency":{
          "shape":"MaximumExecutionFrequency",
          "documentation":"<p>The frequency at which you want Config to run evaluations for a custom rule with a periodic trigger. If you specify a value for <code>MaximumExecutionFrequency</code>, then <code>MessageType</code> must use the <code>ScheduledNotification</code> value.</p> <note> <p>By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the <code>MaximumExecutionFrequency</code> parameter.</p> <p>Based on the valid value you choose, Config runs evaluations once for each valid value. For example, if you choose <code>Three_Hours</code>, Config runs evaluations once every three hours. In this case, <code>Three_Hours</code> is the frequency of this rule. </p> </note>"
        }
      },
      "documentation":"<p>Provides the source and the message types that trigger Config to evaluate your Amazon Web Services resources against a rule. It also provides the frequency with which you want Config to run evaluations for the rule if the trigger type is periodic. You can specify the parameter values for <code>SourceDetail</code> only for custom rules. </p>"
    },
    "SourceDetails":{
      "type":"list",
      "member":{"shape":"SourceDetail"},
      "max":25,
      "min":0
    },
    "SsmControls":{
      "type":"structure",
      "members":{
        "ConcurrentExecutionRatePercentage":{
          "shape":"Percentage",
          "documentation":"<p>The maximum percentage of remediation actions allowed to run in parallel on the non-compliant resources for that specific rule. You can specify a percentage, such as 10%. The default value is 10. </p>"
        },
        "ErrorPercentage":{
          "shape":"Percentage",
          "documentation":"<p>The percentage of errors that are allowed before SSM stops running automations on non-compliant resources for that specific rule. You can specify a percentage of errors, for example 10%. If you do not specifiy a percentage, the default is 50%. For example, if you set the ErrorPercentage to 40% for 10 non-compliant resources, then SSM stops running the automations when the fifth error is received. </p>"
        }
      },
      "documentation":"<p>Amazon Web Services Systems Manager (SSM) specific remediation controls.</p>"
    },
    "StackArn":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "StartConfigRulesEvaluationRequest":{
      "type":"structure",
      "members":{
        "ConfigRuleNames":{
          "shape":"ReevaluateConfigRuleNames",
          "documentation":"<p>The list of names of Config rules that you want to run evaluations for.</p>"
        }
      },
      "documentation":"<p/>"
    },
    "StartConfigRulesEvaluationResponse":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The output when you start the evaluation for the specified Config rule.</p>"
    },
    "StartConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ConfigurationRecorderName"],
      "members":{
        "ConfigurationRecorderName":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the customer managed configuration recorder that you want to start.</p>"
        }
      },
      "documentation":"<p>The input for the <a>StartConfigurationRecorder</a> operation.</p>"
    },
    "StartRemediationExecutionRequest":{
      "type":"structure",
      "required":[
        "ConfigRuleName",
        "ResourceKeys"
      ],
      "members":{
        "ConfigRuleName":{
          "shape":"ConfigRuleName",
          "documentation":"<p>The list of names of Config rules that you want to run remediation execution for.</p>"
        },
        "ResourceKeys":{
          "shape":"ResourceKeys",
          "documentation":"<p>A list of resource keys to be processed with the current request. Each element in the list consists of the resource type and resource ID. </p>"
        }
      }
    },
    "StartRemediationExecutionResponse":{
      "type":"structure",
      "members":{
        "FailureMessage":{
          "shape":"String",
          "documentation":"<p>Returns a failure message. For example, the resource is already compliant.</p>"
        },
        "FailedItems":{
          "shape":"ResourceKeys",
          "documentation":"<p>For resources that have failed to start execution, the API returns a resource key object.</p>"
        }
      }
    },
    "StartResourceEvaluationRequest":{
      "type":"structure",
      "required":[
        "ResourceDetails",
        "EvaluationMode"
      ],
      "members":{
        "ResourceDetails":{
          "shape":"ResourceDetails",
          "documentation":"<p>Returns a <code>ResourceDetails</code> object.</p>"
        },
        "EvaluationContext":{
          "shape":"EvaluationContext",
          "documentation":"<p>Returns an <code>EvaluationContext</code> object.</p>"
        },
        "EvaluationMode":{
          "shape":"EvaluationMode",
          "documentation":"<p>The mode of an evaluation. The valid values for this API are <code>DETECTIVE</code> and <code>PROACTIVE</code>.</p>"
        },
        "EvaluationTimeout":{
          "shape":"EvaluationTimeout",
          "documentation":"<p>The timeout for an evaluation. The default is 900 seconds. You cannot specify a number greater than 3600. If you specify 0, Config uses the default.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A client token is a unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request using one of these actions, specify a client token in the request.</p> <note> <p>Avoid reusing the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, other than the Region or Availability Zone, the retry fails with an IdempotentParameterMismatch error.</p> </note>"
        }
      }
    },
    "StartResourceEvaluationResponse":{
      "type":"structure",
      "members":{
        "ResourceEvaluationId":{
          "shape":"ResourceEvaluationId",
          "documentation":"<p>A unique ResourceEvaluationId that is associated with a single execution.</p>"
        }
      }
    },
    "StaticParameterValues":{
      "type":"list",
      "member":{"shape":"StringWithCharLimit256"},
      "max":25,
      "min":0
    },
    "StaticValue":{
      "type":"structure",
      "required":["Values"],
      "members":{
        "Values":{
          "shape":"StaticParameterValues",
          "documentation":"<p>A list of values. For example, the ARN of the assumed role. </p>"
        }
      },
      "documentation":"<p>The static value of the resource.</p>"
    },
    "StatusDetailFilters":{
      "type":"structure",
      "members":{
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>The 12-digit account ID of the member account within an organization.</p>"
        },
        "MemberAccountRuleStatus":{
          "shape":"MemberAccountRuleStatus",
          "documentation":"<p>Indicates deployment status for Config rule in the member account. When management account calls <code>PutOrganizationConfigRule</code> action for the first time, Config rule status is created in the member account. When management account calls <code>PutOrganizationConfigRule</code> action for the second time, Config rule status is updated in the member account. Config rule status is deleted when the management account deletes <code>OrganizationConfigRule</code> and disables service access for <code>config-multiaccountsetup.amazonaws.com</code>. </p> <p>Config sets the state of the rule to:</p> <ul> <li> <p> <code>CREATE_SUCCESSFUL</code> when Config rule has been created in the member account.</p> </li> <li> <p> <code>CREATE_IN_PROGRESS</code> when Config rule is being created in the member account.</p> </li> <li> <p> <code>CREATE_FAILED</code> when Config rule creation has failed in the member account.</p> </li> <li> <p> <code>DELETE_FAILED</code> when Config rule deletion has failed in the member account.</p> </li> <li> <p> <code>DELETE_IN_PROGRESS</code> when Config rule is being deleted in the member account.</p> </li> <li> <p> <code>DELETE_SUCCESSFUL</code> when Config rule has been deleted in the member account.</p> </li> <li> <p> <code>UPDATE_SUCCESSFUL</code> when Config rule has been updated in the member account.</p> </li> <li> <p> <code>UPDATE_IN_PROGRESS</code> when Config rule is being updated in the member account.</p> </li> <li> <p> <code>UPDATE_FAILED</code> when Config rule deletion has failed in the member account.</p> </li> </ul>"
        }
      },
      "documentation":"<p>Status filter object to filter results based on specific member account ID or status type for an organization Config rule. </p>"
    },
    "StopConfigurationRecorderRequest":{
      "type":"structure",
      "required":["ConfigurationRecorderName"],
      "members":{
        "ConfigurationRecorderName":{
          "shape":"RecorderName",
          "documentation":"<p>The name of the customer managed configuration recorder that you want to stop.</p>"
        }
      },
      "documentation":"<p>The input for the <a>StopConfigurationRecorder</a> operation.</p>"
    },
    "StoredQuery":{
      "type":"structure",
      "required":["QueryName"],
      "members":{
        "QueryId":{
          "shape":"QueryId",
          "documentation":"<p>The ID of the query.</p>",
          "box":true
        },
        "QueryArn":{
          "shape":"QueryArn",
          "documentation":"<p>Amazon Resource Name (ARN) of the query. For example, arn:partition:service:region:account-id:resource-type/resource-name/resource-id.</p>",
          "box":true
        },
        "QueryName":{
          "shape":"QueryName",
          "documentation":"<p>The name of the query.</p>"
        },
        "Description":{
          "shape":"QueryDescription",
          "documentation":"<p>A unique description for the query.</p>",
          "box":true
        },
        "Expression":{
          "shape":"QueryExpression",
          "documentation":"<p>The expression of the query. For example, <code>SELECT resourceId, resourceType, supplementaryConfiguration.BucketVersioningConfiguration.status WHERE resourceType = 'AWS::S3::Bucket' AND supplementaryConfiguration.BucketVersioningConfiguration.status = 'Off'.</code> </p>",
          "box":true
        }
      },
      "documentation":"<p>Provides the details of a stored query.</p>"
    },
    "StoredQueryMetadata":{
      "type":"structure",
      "required":[
        "QueryId",
        "QueryArn",
        "QueryName"
      ],
      "members":{
        "QueryId":{
          "shape":"QueryId",
          "documentation":"<p>The ID of the query. </p>"
        },
        "QueryArn":{
          "shape":"QueryArn",
          "documentation":"<p>Amazon Resource Name (ARN) of the query. For example, arn:partition:service:region:account-id:resource-type/resource-name/resource-id.</p>"
        },
        "QueryName":{
          "shape":"QueryName",
          "documentation":"<p>The name of the query.</p>"
        },
        "Description":{
          "shape":"QueryDescription",
          "documentation":"<p>A unique description for the query.</p>"
        }
      },
      "documentation":"<p>Returns details of a specific query. </p>"
    },
    "StoredQueryMetadataList":{
      "type":"list",
      "member":{"shape":"StoredQueryMetadata"}
    },
    "String":{"type":"string"},
    "StringWithCharLimit1024":{
      "type":"string",
      "max":1024,
      "min":1
    },
    "StringWithCharLimit128":{
      "type":"string",
      "max":128,
      "min":1
    },
    "StringWithCharLimit2048":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "StringWithCharLimit256":{
      "type":"string",
      "max":256,
      "min":1
    },
    "StringWithCharLimit256Min0":{
      "type":"string",
      "max":256,
      "min":0
    },
    "StringWithCharLimit64":{
      "type":"string",
      "max":64,
      "min":1
    },
    "StringWithCharLimit768":{
      "type":"string",
      "max":768,
      "min":1
    },
    "SupplementaryConfiguration":{
      "type":"map",
      "key":{"shape":"SupplementaryConfigurationName"},
      "value":{"shape":"SupplementaryConfigurationValue"}
    },
    "SupplementaryConfigurationName":{"type":"string"},
    "SupplementaryConfigurationValue":{"type":"string"},
    "Tag":{
      "type":"structure",
      "members":{
        "Key":{
          "shape":"TagKey",
          "documentation":"<p>One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.</p>"
        },
        "Value":{
          "shape":"TagValue",
          "documentation":"<p>The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).</p>"
        }
      },
      "documentation":"<p>The tags for the resource. The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":1
    },
    "TagList":{
      "type":"list",
      "member":{"shape":"Tag"},
      "max":50,
      "min":1
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "Tags"
      ],
      "members":{
        "ResourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. The following resources are supported:</p> <ul> <li> <p> <code>ConfigurationRecorder</code> </p> </li> <li> <p> <code>ConfigRule</code> </p> </li> <li> <p> <code>OrganizationConfigRule</code> </p> </li> <li> <p> <code>ConformancePack</code> </p> </li> <li> <p> <code>OrganizationConformancePack</code> </p> </li> <li> <p> <code>ConfigurationAggregator</code> </p> </li> <li> <p> <code>AggregationAuthorization</code> </p> </li> <li> <p> <code>StoredQuery</code> </p> </li> </ul>"
        },
        "Tags":{
          "shape":"TagList",
          "documentation":"<p>An array of tag object.</p>"
        }
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "Tags":{
      "type":"map",
      "key":{"shape":"Name"},
      "value":{"shape":"Value"}
    },
    "TagsList":{
      "type":"list",
      "member":{"shape":"Tag"},
      "max":50,
      "min":0
    },
    "TemplateBody":{
      "type":"string",
      "max":51200,
      "min":1
    },
    "TemplateS3Uri":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"s3://.*"
    },
    "TemplateSSMDocumentDetails":{
      "type":"structure",
      "required":["DocumentName"],
      "members":{
        "DocumentName":{
          "shape":"SSMDocumentName",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the SSM document to use to create a conformance pack. If you use the document name, Config checks only your account and Amazon Web Services Region for the SSM document.</p>"
        },
        "DocumentVersion":{
          "shape":"SSMDocumentVersion",
          "documentation":"<p>The version of the SSM document to use to create a conformance pack. By default, Config uses the latest version.</p> <note> <p>This field is optional.</p> </note>"
        }
      },
      "documentation":"<p>This API allows you to create a conformance pack template with an Amazon Web Services Systems Manager document (SSM document). To deploy a conformance pack using an SSM document, first create an SSM document with conformance pack content, and then provide the <code>DocumentName</code> in the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConformancePack.html\">PutConformancePack API</a>. You can also provide the <code>DocumentVersion</code>.</p> <p>The <code>TemplateSSMDocumentDetails</code> object contains the name of the SSM document and the version of the SSM document.</p>"
    },
    "TimeWindow":{
      "type":"structure",
      "members":{
        "StartTime":{
          "shape":"Date",
          "documentation":"<p>The start time of an execution.</p>"
        },
        "EndTime":{
          "shape":"Date",
          "documentation":"<p>The end time of an execution. The end time must be after the start date.</p>"
        }
      },
      "documentation":"<p>Filters evaluation results based on start and end times.</p>"
    },
    "TooManyTagsException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>You have reached the limit of the number of tags you can use. For more information, see <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html\"> <b>Service Limits</b> </a> in the <i>Config Developer Guide</i>.</p>",
      "exception":true
    },
    "UnmodifiableEntityException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The requested operation is not valid.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigurationRecorder.html\">PutConfigurationRecorder</a>, you will see this exception because you cannot use this operation to create a service-linked configuration recorder. Use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutServiceLinkedConfigurationRecorder.html\">PutServiceLinkedConfigurationRecorder</a> operation to create a service-linked configuration recorder.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteConfigurationRecorder.html\">DeleteConfigurationRecorder</a>, you will see this exception because you cannot use this operation to delete a service-linked configuration recorder. Use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteServiceLinkedConfigurationRecorder.html\">DeleteServiceLinkedConfigurationRecorder</a> operation to delete a service-linked configuration recorder.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_StartConfigurationRecorder.html\">StartConfigurationRecorder</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_StopConfigurationRecorder.html\">StopConfigurationRecorder</a>, you will see this exception because these operations do not affect service-linked configuration recorders. Service-linked configuration recorders are always recording. To stop recording, you must delete the service-linked configuration recorder. Use the <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteServiceLinkedConfigurationRecorder.html\">DeleteServiceLinkedConfigurationRecorder</a> operation to delete a service-linked configuration recorder.</p>",
      "exception":true
    },
    "UnprocessedResourceIdentifierList":{
      "type":"list",
      "member":{"shape":"AggregateResourceIdentifier"}
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "TagKeys"
      ],
      "members":{
        "ResourceArn":{
          "shape":"AmazonResourceName",
          "documentation":"<p>The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. The following resources are supported:</p> <ul> <li> <p> <code>ConfigurationRecorder</code> </p> </li> <li> <p> <code>ConfigRule</code> </p> </li> <li> <p> <code>OrganizationConfigRule</code> </p> </li> <li> <p> <code>ConformancePack</code> </p> </li> <li> <p> <code>OrganizationConformancePack</code> </p> </li> <li> <p> <code>ConfigurationAggregator</code> </p> </li> <li> <p> <code>AggregationAuthorization</code> </p> </li> <li> <p> <code>StoredQuery</code> </p> </li> </ul>"
        },
        "TagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>The keys of the tags to be removed.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p>The requested operation is not valid. You will see this exception if there are missing required fields or if the input value fails the validation.</p> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_PutStoredQuery.html\">PutStoredQuery</a>, one of the following errors:</p> <ul> <li> <p>There are missing required fields.</p> </li> <li> <p>The input value fails the validation.</p> </li> <li> <p>You are trying to create more than 300 queries.</p> </li> </ul> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorders.html\">DescribeConfigurationRecorders</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DescribeConfigurationRecorderStatus.html\">DescribeConfigurationRecorderStatus</a>, one of the following errors:</p> <ul> <li> <p>You have specified more than one configuration recorder.</p> </li> <li> <p>You have provided a service principal for service-linked configuration recorder that is not valid.</p> </li> </ul> <p>For <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_AssociateResourceTypes.html\">AssociateResourceTypes</a> and <a href=\"https://docs.aws.amazon.com/config/latest/APIReference/API_DisassociateResourceTypes.html\">DisassociateResourceTypes</a>, one of the following errors:</p> <ul> <li> <p>Your configuraiton recorder has a recording strategy that does not allow the association or disassociation of resource types.</p> </li> <li> <p>One or more of the specified resource types are already associated or disassociated with the configuration recorder.</p> </li> <li> <p>For service-linked configuration recorders, the configuration recorder does not record one or more of the specified resource types.</p> </li> </ul>",
      "exception":true
    },
    "Value":{"type":"string"},
    "Version":{"type":"string"}
  },
  "documentation":"<fullname>Config</fullname> <p>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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources\">Supported Amazon Web Services resources</a>.</p> <p>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 <a href=\"https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html\">Signature Version 4 Signing Process</a>. 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 <a href=\"https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html\">What Is Config</a> in the <i>Config Developer Guide</i>.</p>"
}
