CloneReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.Body.OriginalRuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfigurationSet

valid {
    input.Body.ConfigurationSet.Name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfigurationSetEventDestination

enum_DimensionValueSource := [ "messageTag", "emailHeader", "linkTag" ]
enum_EventType := [ "send", "reject", "bounce", "complaint", "delivery", "open", "click", "renderingFailure" ]

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.EventDestination.Name == STRING
    input.Body.EventDestination.Enabled == BOOLEAN
    input.Body.EventDestination.MatchingEventTypes[_] == enum_EventType[_]
    input.Body.EventDestination.KinesisFirehoseDestination.IAMRoleARN == STRING
    input.Body.EventDestination.KinesisFirehoseDestination.DeliveryStreamARN == STRING
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DimensionName == STRING
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DimensionValueSource == enum_DimensionValueSource[_]
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DefaultDimensionValue == STRING
    input.Body.EventDestination.SNSDestination.TopicARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfigurationSetTrackingOptions

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.TrackingOptions.CustomRedirectDomain == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateCustomVerificationEmailTemplate

valid {
    input.Body.TemplateName == STRING
    input.Body.FromEmailAddress == STRING
    input.Body.TemplateSubject == STRING
    input.Body.TemplateContent == STRING
    input.Body.SuccessRedirectionURL == STRING
    input.Body.FailureRedirectionURL == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateReceiptFilter

enum_ReceiptFilterPolicy := [ "Block", "Allow" ]

valid {
    input.Body.Filter.Name == STRING
    input.Body.Filter.IpFilter.Policy == enum_ReceiptFilterPolicy[_]
    input.Body.Filter.IpFilter.Cidr == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateReceiptRule

enum_InvocationType := [ "Event", "RequestResponse" ]
enum_SNSActionEncoding := [ "UTF-8", "Base64" ]
enum_StopScope := [ "RuleSet" ]
enum_TlsPolicy := [ "Require", "Optional" ]

valid {
    input.Body.RuleSetName == STRING
    input.Body.After == STRING
    input.Body.Rule.Name == STRING
    input.Body.Rule.Enabled == BOOLEAN
    input.Body.Rule.TlsPolicy == enum_TlsPolicy[_]
    input.Body.Rule.Recipients[_] == STRING
    input.Body.Rule.Actions[_].S3Action.TopicArn == STRING
    input.Body.Rule.Actions[_].S3Action.BucketName == STRING
    input.Body.Rule.Actions[_].S3Action.ObjectKeyPrefix == STRING
    input.Body.Rule.Actions[_].S3Action.KmsKeyArn == STRING
    input.Body.Rule.Actions[_].S3Action.IamRoleArn == STRING
    input.Body.Rule.Actions[_].BounceAction.TopicArn == STRING
    input.Body.Rule.Actions[_].BounceAction.SmtpReplyCode == STRING
    input.Body.Rule.Actions[_].BounceAction.StatusCode == STRING
    input.Body.Rule.Actions[_].BounceAction.Message == STRING
    input.Body.Rule.Actions[_].BounceAction.Sender == STRING
    input.Body.Rule.Actions[_].WorkmailAction.TopicArn == STRING
    input.Body.Rule.Actions[_].WorkmailAction.OrganizationArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.TopicArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.FunctionArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.InvocationType == enum_InvocationType[_]
    input.Body.Rule.Actions[_].StopAction.Scope == enum_StopScope[_]
    input.Body.Rule.Actions[_].StopAction.TopicArn == STRING
    input.Body.Rule.Actions[_].AddHeaderAction.HeaderName == STRING
    input.Body.Rule.Actions[_].AddHeaderAction.HeaderValue == STRING
    input.Body.Rule.Actions[_].SNSAction.TopicArn == STRING
    input.Body.Rule.Actions[_].SNSAction.Encoding == enum_SNSActionEncoding[_]
    input.Body.Rule.ScanEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTemplate

valid {
    input.Body.Template.TemplateName == STRING
    input.Body.Template.SubjectPart == STRING
    input.Body.Template.TextPart == STRING
    input.Body.Template.HtmlPart == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteConfigurationSet

valid {
    input.Body.ConfigurationSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteConfigurationSetEventDestination

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.EventDestinationName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteConfigurationSetTrackingOptions

valid {
    input.Body.ConfigurationSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteCustomVerificationEmailTemplate

valid {
    input.Body.TemplateName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteIdentity

valid {
    input.Body.Identity == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteIdentityPolicy

valid {
    input.Body.Identity == STRING
    input.Body.PolicyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteReceiptFilter

valid {
    input.Body.FilterName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteReceiptRule

valid {
    input.Body.RuleSetName == STRING
    input.Body.RuleName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTemplate

valid {
    input.Body.TemplateName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteVerifiedEmailAddress

valid {
    input.Body.EmailAddress == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeActiveReceiptRuleSet

valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeConfigurationSet

enum_ConfigurationSetAttribute := [ "eventDestinations", "trackingOptions", "deliveryOptions", "reputationOptions" ]

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.ConfigurationSetAttributeNames[_] == enum_ConfigurationSetAttribute[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReceiptRule

valid {
    input.Body.RuleSetName == STRING
    input.Body.RuleName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAccountSendingEnabled

valid {
    input.Body.RuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetCustomVerificationEmailTemplate

valid {
    input.Body.TemplateName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdentityDkimAttributes

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdentityMailFromDomainAttributes

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdentityNotificationAttributes

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdentityPolicies

valid {
    input.Body.Identity == STRING
    input.Body.PolicyNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdentityVerificationAttributes

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSendQuota

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSendStatistics

valid {
    input.Body.Identities[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetTemplate

valid {
    input.Body.TemplateName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListConfigurationSets

valid {
    input.Body.NextToken == STRING
    input.Body.MaxItems == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCustomVerificationEmailTemplates

valid {
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListIdentities

enum_IdentityType := [ "EmailAddress", "Domain" ]

valid {
    input.Body.IdentityType == enum_IdentityType[_]
    input.Body.NextToken == STRING
    input.Body.MaxItems == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListIdentityPolicies

valid {
    input.Body.Identity == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListReceiptFilters

valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListReceiptRuleSets

valid {
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTemplates

valid {
    input.Body.NextToken == STRING
    input.Body.MaxItems == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListVerifiedEmailAddresses

valid {
    input.Body.NextToken == STRING
    input.Body.MaxItems == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutConfigurationSetDeliveryOptions

enum_TlsPolicy := [ "Require", "Optional" ]

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.DeliveryOptions.TlsPolicy == enum_TlsPolicy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutIdentityPolicy

valid {
    input.Body.Identity == STRING
    input.Body.PolicyName == STRING
    input.Body.Policy == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ReorderReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.Body.RuleNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendBounce

enum_BounceType := [ "DoesNotExist", "MessageTooLarge", "ExceededQuota", "ContentRejected", "Undefined", "TemporaryFailure" ]
enum_DsnAction := [ "failed", "delayed", "delivered", "relayed", "expanded" ]

valid {
    input.Body.OriginalMessageId == STRING
    input.Body.BounceSender == STRING
    input.Body.Explanation == STRING
    input.Body.MessageDsn.ReportingMta == STRING
    input.Body.MessageDsn.ArrivalDate == TIMESTAMP
    input.Body.MessageDsn.ExtensionFields[_].Name == STRING
    input.Body.MessageDsn.ExtensionFields[_].Value == STRING
    input.Body.BouncedRecipientInfoList[_].Recipient == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientArn == STRING
    input.Body.BouncedRecipientInfoList[_].BounceType == enum_BounceType[_]
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.FinalRecipient == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.Action == enum_DsnAction[_]
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.RemoteMta == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.Status == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.DiagnosticCode == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.LastAttemptDate == TIMESTAMP
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.ExtensionFields[_].Name == STRING
    input.Body.BouncedRecipientInfoList[_].RecipientDsnFields.ExtensionFields[_].Value == STRING
    input.Body.BounceSenderArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendBulkTemplatedEmail

valid {
    input.Body.Source == STRING
    input.Body.SourceArn == STRING
    input.Body.ReplyToAddresses[_] == STRING
    input.Body.ReturnPath == STRING
    input.Body.ReturnPathArn == STRING
    input.Body.ConfigurationSetName == STRING
    input.Body.DefaultTags[_].Name == STRING
    input.Body.DefaultTags[_].Value == STRING
    input.Body.Template == STRING
    input.Body.TemplateArn == STRING
    input.Body.DefaultTemplateData == STRING
    input.Body.Destinations[_].Destination.ToAddresses[_] == STRING
    input.Body.Destinations[_].Destination.CcAddresses[_] == STRING
    input.Body.Destinations[_].Destination.BccAddresses[_] == STRING
    input.Body.Destinations[_].ReplacementTags[_].Name == STRING
    input.Body.Destinations[_].ReplacementTags[_].Value == STRING
    input.Body.Destinations[_].ReplacementTemplateData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendCustomVerificationEmail

valid {
    input.Body.EmailAddress == STRING
    input.Body.TemplateName == STRING
    input.Body.ConfigurationSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendEmail

valid {
    input.Body.Source == STRING
    input.Body.Destination.ToAddresses[_] == STRING
    input.Body.Destination.CcAddresses[_] == STRING
    input.Body.Destination.BccAddresses[_] == STRING
    input.Body.Message.Subject.Data == STRING
    input.Body.Message.Subject.Charset == STRING
    input.Body.Message.Body.Text.Data == STRING
    input.Body.Message.Body.Text.Charset == STRING
    input.Body.Message.Body.Html.Data == STRING
    input.Body.Message.Body.Html.Charset == STRING
    input.Body.ReplyToAddresses[_] == STRING
    input.Body.ReturnPath == STRING
    input.Body.SourceArn == STRING
    input.Body.ReturnPathArn == STRING
    input.Body.Tags[_].Name == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ConfigurationSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendRawEmail

valid {
    input.Body.Source == STRING
    input.Body.Destinations[_] == STRING
    input.Body.RawMessage.Data == BLOB
    input.Body.FromArn == STRING
    input.Body.SourceArn == STRING
    input.Body.ReturnPathArn == STRING
    input.Body.Tags[_].Name == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ConfigurationSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SendTemplatedEmail

valid {
    input.Body.Source == STRING
    input.Body.Destination.ToAddresses[_] == STRING
    input.Body.Destination.CcAddresses[_] == STRING
    input.Body.Destination.BccAddresses[_] == STRING
    input.Body.ReplyToAddresses[_] == STRING
    input.Body.ReturnPath == STRING
    input.Body.SourceArn == STRING
    input.Body.ReturnPathArn == STRING
    input.Body.Tags[_].Name == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ConfigurationSetName == STRING
    input.Body.Template == STRING
    input.Body.TemplateArn == STRING
    input.Body.TemplateData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetActiveReceiptRuleSet

valid {
    input.Body.RuleSetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetIdentityDkimEnabled

valid {
    input.Body.Identity == STRING
    input.Body.DkimEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetIdentityFeedbackForwardingEnabled

valid {
    input.Body.Identity == STRING
    input.Body.ForwardingEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetIdentityHeadersInNotificationsEnabled

enum_NotificationType := [ "Bounce", "Complaint", "Delivery" ]

valid {
    input.Body.Identity == STRING
    input.Body.NotificationType == enum_NotificationType[_]
    input.Body.Enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetIdentityMailFromDomain

enum_BehaviorOnMXFailure := [ "UseDefaultValue", "RejectMessage" ]

valid {
    input.Body.Identity == STRING
    input.Body.MailFromDomain == STRING
    input.Body.BehaviorOnMXFailure == enum_BehaviorOnMXFailure[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetIdentityNotificationTopic

enum_NotificationType := [ "Bounce", "Complaint", "Delivery" ]

valid {
    input.Body.Identity == STRING
    input.Body.NotificationType == enum_NotificationType[_]
    input.Body.SnsTopic == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetReceiptRulePosition

valid {
    input.Body.RuleSetName == STRING
    input.Body.RuleName == STRING
    input.Body.After == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TestRenderTemplate

valid {
    input.Body.TemplateName == STRING
    input.Body.TemplateData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAccountSendingEnabled

valid {
    input.Body.Enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfigurationSetEventDestination

enum_DimensionValueSource := [ "messageTag", "emailHeader", "linkTag" ]
enum_EventType := [ "send", "reject", "bounce", "complaint", "delivery", "open", "click", "renderingFailure" ]

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.EventDestination.Name == STRING
    input.Body.EventDestination.Enabled == BOOLEAN
    input.Body.EventDestination.MatchingEventTypes[_] == enum_EventType[_]
    input.Body.EventDestination.KinesisFirehoseDestination.IAMRoleARN == STRING
    input.Body.EventDestination.KinesisFirehoseDestination.DeliveryStreamARN == STRING
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DimensionName == STRING
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DimensionValueSource == enum_DimensionValueSource[_]
    input.Body.EventDestination.CloudWatchDestination.DimensionConfigurations[_].DefaultDimensionValue == STRING
    input.Body.EventDestination.SNSDestination.TopicARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfigurationSetReputationMetricsEnabled

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.Enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfigurationSetSendingEnabled

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.Enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfigurationSetTrackingOptions

valid {
    input.Body.ConfigurationSetName == STRING
    input.Body.TrackingOptions.CustomRedirectDomain == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateCustomVerificationEmailTemplate

valid {
    input.Body.TemplateName == STRING
    input.Body.FromEmailAddress == STRING
    input.Body.TemplateSubject == STRING
    input.Body.TemplateContent == STRING
    input.Body.SuccessRedirectionURL == STRING
    input.Body.FailureRedirectionURL == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateReceiptRule

enum_InvocationType := [ "Event", "RequestResponse" ]
enum_SNSActionEncoding := [ "UTF-8", "Base64" ]
enum_StopScope := [ "RuleSet" ]
enum_TlsPolicy := [ "Require", "Optional" ]

valid {
    input.Body.RuleSetName == STRING
    input.Body.Rule.Name == STRING
    input.Body.Rule.Enabled == BOOLEAN
    input.Body.Rule.TlsPolicy == enum_TlsPolicy[_]
    input.Body.Rule.Recipients[_] == STRING
    input.Body.Rule.Actions[_].S3Action.TopicArn == STRING
    input.Body.Rule.Actions[_].S3Action.BucketName == STRING
    input.Body.Rule.Actions[_].S3Action.ObjectKeyPrefix == STRING
    input.Body.Rule.Actions[_].S3Action.KmsKeyArn == STRING
    input.Body.Rule.Actions[_].S3Action.IamRoleArn == STRING
    input.Body.Rule.Actions[_].BounceAction.TopicArn == STRING
    input.Body.Rule.Actions[_].BounceAction.SmtpReplyCode == STRING
    input.Body.Rule.Actions[_].BounceAction.StatusCode == STRING
    input.Body.Rule.Actions[_].BounceAction.Message == STRING
    input.Body.Rule.Actions[_].BounceAction.Sender == STRING
    input.Body.Rule.Actions[_].WorkmailAction.TopicArn == STRING
    input.Body.Rule.Actions[_].WorkmailAction.OrganizationArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.TopicArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.FunctionArn == STRING
    input.Body.Rule.Actions[_].LambdaAction.InvocationType == enum_InvocationType[_]
    input.Body.Rule.Actions[_].StopAction.Scope == enum_StopScope[_]
    input.Body.Rule.Actions[_].StopAction.TopicArn == STRING
    input.Body.Rule.Actions[_].AddHeaderAction.HeaderName == STRING
    input.Body.Rule.Actions[_].AddHeaderAction.HeaderValue == STRING
    input.Body.Rule.Actions[_].SNSAction.TopicArn == STRING
    input.Body.Rule.Actions[_].SNSAction.Encoding == enum_SNSActionEncoding[_]
    input.Body.Rule.ScanEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTemplate

valid {
    input.Body.Template.TemplateName == STRING
    input.Body.Template.SubjectPart == STRING
    input.Body.Template.TextPart == STRING
    input.Body.Template.HtmlPart == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

VerifyDomainDkim

valid {
    input.Body.Domain == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

VerifyDomainIdentity

valid {
    input.Body.Domain == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

VerifyEmailAddress

valid {
    input.Body.EmailAddress == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

VerifyEmailIdentity

valid {
    input.Body.EmailAddress == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}