MAILMANAGER

CreateAddonInstance

valid {
    input.Body.AddonSubscriptionId == STRING
    input.Body.ClientToken == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAddonSubscription

valid {
    input.Body.AddonName == STRING
    input.Body.ClientToken == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateArchive

enum_RetentionPeriod := [ "THREE_MONTHS", "SIX_MONTHS", "NINE_MONTHS", "ONE_YEAR", "EIGHTEEN_MONTHS", "TWO_YEARS", "THIRTY_MONTHS", "THREE_YEARS", "FOUR_YEARS", "FIVE_YEARS", "SIX_YEARS", "SEVEN_YEARS", "EIGHT_YEARS", "NINE_YEARS", "TEN_YEARS", "PERMANENT" ]

valid {
    input.Body.ArchiveName == STRING
    input.Body.ClientToken == STRING
    input.Body.KmsKeyArn == STRING
    input.Body.Retention.RetentionPeriod == enum_RetentionPeriod[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateIngressPoint

enum_IngressPointType := [ "OPEN", "AUTH" ]

valid {
    input.Body.ClientToken == STRING
    input.Body.IngressPointConfiguration.SecretArn == STRING
    input.Body.IngressPointConfiguration.SmtpPassword == STRING
    input.Body.IngressPointName == STRING
    input.Body.RuleSetId == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.TrafficPolicyId == STRING
    input.Body.Type == enum_IngressPointType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRelay

valid {
    input.Body.Authentication.NoAuthentication == {}
    input.Body.Authentication.SecretArn == STRING
    input.Body.ClientToken == STRING
    input.Body.RelayName == STRING
    input.Body.ServerName == STRING
    input.Body.ServerPort == INTEGER
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRuleSet

enum_ActionFailurePolicy := [ "CONTINUE", "DROP" ]
enum_MailFrom := [ "REPLACE", "PRESERVE" ]
enum_RuleBooleanEmailAttribute := [ "READ_RECEIPT_REQUESTED", "TLS", "TLS_WRAPPED" ]
enum_RuleBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_RuleDmarcOperator := [ "EQUALS", "NOT_EQUALS" ]
enum_RuleDmarcPolicy := [ "NONE", "QUARANTINE", "REJECT" ]
enum_RuleIpEmailAttribute := [ "SOURCE_IP" ]
enum_RuleIpOperator := [ "CIDR_MATCHES", "NOT_CIDR_MATCHES" ]
enum_RuleNumberEmailAttribute := [ "MESSAGE_SIZE" ]
enum_RuleNumberOperator := [ "EQUALS", "NOT_EQUALS", "LESS_THAN", "GREATER_THAN", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL" ]
enum_RuleStringEmailAttribute := [ "MAIL_FROM", "HELO", "RECIPIENT", "SENDER", "FROM", "SUBJECT", "TO", "CC" ]
enum_RuleStringOperator := [ "EQUALS", "NOT_EQUALS", "STARTS_WITH", "ENDS_WITH", "CONTAINS" ]
enum_RuleVerdict := [ "PASS", "FAIL", "GRAY", "PROCESSING_FAILED" ]
enum_RuleVerdictAttribute := [ "SPF", "DKIM" ]
enum_RuleVerdictOperator := [ "EQUALS", "NOT_EQUALS" ]

valid {
    input.Body.ClientToken == STRING
    input.Body.RuleSetName == STRING
    input.Body.Rules[_].Actions[_].AddHeader.HeaderName == STRING
    input.Body.Rules[_].Actions[_].AddHeader.HeaderValue == STRING
    input.Body.Rules[_].Actions[_].Archive.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Archive.TargetArchive == STRING
    input.Body.Rules[_].Actions[_].DeliverToMailbox.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].DeliverToMailbox.MailboxArn == STRING
    input.Body.Rules[_].Actions[_].DeliverToMailbox.RoleArn == STRING
    input.Body.Rules[_].Actions[_].Drop == {}
    input.Body.Rules[_].Actions[_].Relay.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Relay.MailFrom == enum_MailFrom[_]
    input.Body.Rules[_].Actions[_].Relay.Relay == STRING
    input.Body.Rules[_].Actions[_].ReplaceRecipient.ReplaceWith[_] == STRING
    input.Body.Rules[_].Actions[_].Send.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Send.RoleArn == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].WriteToS3.RoleArn == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3Bucket == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3Prefix == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3SseKmsKeyId == STRING
    input.Body.Rules[_].Conditions[_].BooleanExpression.Evaluate.Attribute == enum_RuleBooleanEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].BooleanExpression.Operator == enum_RuleBooleanOperator[_]
    input.Body.Rules[_].Conditions[_].DmarcExpression.Operator == enum_RuleDmarcOperator[_]
    input.Body.Rules[_].Conditions[_].DmarcExpression.Values[_] == enum_RuleDmarcPolicy[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Evaluate.Attribute == enum_RuleIpEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Operator == enum_RuleIpOperator[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Values[_] == STRING
    input.Body.Rules[_].Conditions[_].NumberExpression.Evaluate.Attribute == enum_RuleNumberEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].NumberExpression.Operator == enum_RuleNumberOperator[_]
    input.Body.Rules[_].Conditions[_].NumberExpression.Value == DOUBLE
    input.Body.Rules[_].Conditions[_].StringExpression.Evaluate.Attribute == enum_RuleStringEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].StringExpression.Operator == enum_RuleStringOperator[_]
    input.Body.Rules[_].Conditions[_].StringExpression.Values[_] == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Attribute == enum_RuleVerdictAttribute[_]
    input.Body.Rules[_].Conditions[_].VerdictExpression.Operator == enum_RuleVerdictOperator[_]
    input.Body.Rules[_].Conditions[_].VerdictExpression.Values[_] == enum_RuleVerdict[_]
    input.Body.Rules[_].Name == STRING
    input.Body.Rules[_].Unless[_].BooleanExpression.Evaluate.Attribute == enum_RuleBooleanEmailAttribute[_]
    input.Body.Rules[_].Unless[_].BooleanExpression.Operator == enum_RuleBooleanOperator[_]
    input.Body.Rules[_].Unless[_].DmarcExpression.Operator == enum_RuleDmarcOperator[_]
    input.Body.Rules[_].Unless[_].DmarcExpression.Values[_] == enum_RuleDmarcPolicy[_]
    input.Body.Rules[_].Unless[_].IpExpression.Evaluate.Attribute == enum_RuleIpEmailAttribute[_]
    input.Body.Rules[_].Unless[_].IpExpression.Operator == enum_RuleIpOperator[_]
    input.Body.Rules[_].Unless[_].IpExpression.Values[_] == STRING
    input.Body.Rules[_].Unless[_].NumberExpression.Evaluate.Attribute == enum_RuleNumberEmailAttribute[_]
    input.Body.Rules[_].Unless[_].NumberExpression.Operator == enum_RuleNumberOperator[_]
    input.Body.Rules[_].Unless[_].NumberExpression.Value == DOUBLE
    input.Body.Rules[_].Unless[_].StringExpression.Evaluate.Attribute == enum_RuleStringEmailAttribute[_]
    input.Body.Rules[_].Unless[_].StringExpression.Operator == enum_RuleStringOperator[_]
    input.Body.Rules[_].Unless[_].StringExpression.Values[_] == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Attribute == enum_RuleVerdictAttribute[_]
    input.Body.Rules[_].Unless[_].VerdictExpression.Operator == enum_RuleVerdictOperator[_]
    input.Body.Rules[_].Unless[_].VerdictExpression.Values[_] == enum_RuleVerdict[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTrafficPolicy

enum_AcceptAction := [ "ALLOW", "DENY" ]
enum_IngressBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_IngressIpOperator := [ "CIDR_MATCHES", "NOT_CIDR_MATCHES" ]
enum_IngressIpv4Attribute := [ "SENDER_IP" ]
enum_IngressStringEmailAttribute := [ "RECIPIENT" ]
enum_IngressStringOperator := [ "EQUALS", "NOT_EQUALS", "STARTS_WITH", "ENDS_WITH", "CONTAINS" ]
enum_IngressTlsAttribute := [ "TLS_PROTOCOL" ]
enum_IngressTlsProtocolAttribute := [ "TLS1_2", "TLS1_3" ]
enum_IngressTlsProtocolOperator := [ "MINIMUM_TLS_VERSION", "IS" ]

valid {
    input.Body.ClientToken == STRING
    input.Body.DefaultAction == enum_AcceptAction[_]
    input.Body.MaxMessageSizeBytes == INTEGER
    input.Body.PolicyStatements[_].Action == enum_AcceptAction[_]
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Operator == enum_IngressBooleanOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Evaluate.Attribute == enum_IngressIpv4Attribute[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Operator == enum_IngressIpOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Values[_] == STRING
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Evaluate.Attribute == enum_IngressStringEmailAttribute[_]
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Operator == enum_IngressStringOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Values[_] == STRING
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Evaluate.Attribute == enum_IngressTlsAttribute[_]
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Operator == enum_IngressTlsProtocolOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Value == enum_IngressTlsProtocolAttribute[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.TrafficPolicyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAddonInstance

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

DeleteAddonSubscription

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

DeleteArchive

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

DeleteIngressPoint

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

DeleteRelay

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

DeleteRuleSet

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

DeleteTrafficPolicy

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

GetAddonInstance

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

GetAddonSubscription

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

GetArchive

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

GetArchiveExport

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

GetArchiveMessage

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

GetArchiveMessageContent

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

GetArchiveSearch

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

GetArchiveSearchResults

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

GetIngressPoint

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

GetRelay

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

GetRuleSet

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

GetTrafficPolicy

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

ListAddonInstances

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

ListAddonSubscriptions

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

ListArchiveExports

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

ListArchiveSearches

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

ListArchives

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

ListIngressPoints

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

ListRelays

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

ListRuleSets

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

ListTagsForResource

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

ListTrafficPolicies

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

StartArchiveExport

enum_ArchiveBooleanEmailAttribute := [ "HAS_ATTACHMENTS" ]
enum_ArchiveBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_ArchiveStringEmailAttribute := [ "TO", "FROM", "CC", "SUBJECT" ]
enum_ArchiveStringOperator := [ "CONTAINS" ]

valid {
    input.Body.ArchiveId == STRING
    input.Body.ExportDestinationConfiguration.S3.S3Location == STRING
    input.Body.Filters.Include[_].BooleanExpression.Evaluate.Attribute == enum_ArchiveBooleanEmailAttribute[_]
    input.Body.Filters.Include[_].BooleanExpression.Operator == enum_ArchiveBooleanOperator[_]
    input.Body.Filters.Include[_].StringExpression.Evaluate.Attribute == enum_ArchiveStringEmailAttribute[_]
    input.Body.Filters.Include[_].StringExpression.Operator == enum_ArchiveStringOperator[_]
    input.Body.Filters.Include[_].StringExpression.Values[_] == STRING
    input.Body.Filters.Unless[_].BooleanExpression.Evaluate.Attribute == enum_ArchiveBooleanEmailAttribute[_]
    input.Body.Filters.Unless[_].BooleanExpression.Operator == enum_ArchiveBooleanOperator[_]
    input.Body.Filters.Unless[_].StringExpression.Evaluate.Attribute == enum_ArchiveStringEmailAttribute[_]
    input.Body.Filters.Unless[_].StringExpression.Operator == enum_ArchiveStringOperator[_]
    input.Body.Filters.Unless[_].StringExpression.Values[_] == STRING
    input.Body.FromTimestamp == TIMESTAMP
    input.Body.MaxResults == INTEGER
    input.Body.ToTimestamp == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartArchiveSearch

enum_ArchiveBooleanEmailAttribute := [ "HAS_ATTACHMENTS" ]
enum_ArchiveBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_ArchiveStringEmailAttribute := [ "TO", "FROM", "CC", "SUBJECT" ]
enum_ArchiveStringOperator := [ "CONTAINS" ]

valid {
    input.Body.ArchiveId == STRING
    input.Body.Filters.Include[_].BooleanExpression.Evaluate.Attribute == enum_ArchiveBooleanEmailAttribute[_]
    input.Body.Filters.Include[_].BooleanExpression.Operator == enum_ArchiveBooleanOperator[_]
    input.Body.Filters.Include[_].StringExpression.Evaluate.Attribute == enum_ArchiveStringEmailAttribute[_]
    input.Body.Filters.Include[_].StringExpression.Operator == enum_ArchiveStringOperator[_]
    input.Body.Filters.Include[_].StringExpression.Values[_] == STRING
    input.Body.Filters.Unless[_].BooleanExpression.Evaluate.Attribute == enum_ArchiveBooleanEmailAttribute[_]
    input.Body.Filters.Unless[_].BooleanExpression.Operator == enum_ArchiveBooleanOperator[_]
    input.Body.Filters.Unless[_].StringExpression.Evaluate.Attribute == enum_ArchiveStringEmailAttribute[_]
    input.Body.Filters.Unless[_].StringExpression.Operator == enum_ArchiveStringOperator[_]
    input.Body.Filters.Unless[_].StringExpression.Values[_] == STRING
    input.Body.FromTimestamp == TIMESTAMP
    input.Body.MaxResults == INTEGER
    input.Body.ToTimestamp == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopArchiveExport

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

StopArchiveSearch

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

TagResource

valid {
    input.Body.ResourceArn == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

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

UpdateArchive

enum_RetentionPeriod := [ "THREE_MONTHS", "SIX_MONTHS", "NINE_MONTHS", "ONE_YEAR", "EIGHTEEN_MONTHS", "TWO_YEARS", "THIRTY_MONTHS", "THREE_YEARS", "FOUR_YEARS", "FIVE_YEARS", "SIX_YEARS", "SEVEN_YEARS", "EIGHT_YEARS", "NINE_YEARS", "TEN_YEARS", "PERMANENT" ]

valid {
    input.Body.ArchiveId == STRING
    input.Body.ArchiveName == STRING
    input.Body.Retention.RetentionPeriod == enum_RetentionPeriod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateIngressPoint

enum_IngressPointStatusToUpdate := [ "ACTIVE", "CLOSED" ]

valid {
    input.Body.IngressPointConfiguration.SecretArn == STRING
    input.Body.IngressPointConfiguration.SmtpPassword == STRING
    input.Body.IngressPointId == STRING
    input.Body.IngressPointName == STRING
    input.Body.RuleSetId == STRING
    input.Body.StatusToUpdate == enum_IngressPointStatusToUpdate[_]
    input.Body.TrafficPolicyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateRelay

valid {
    input.Body.Authentication.NoAuthentication == {}
    input.Body.Authentication.SecretArn == STRING
    input.Body.RelayId == STRING
    input.Body.RelayName == STRING
    input.Body.ServerName == STRING
    input.Body.ServerPort == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateRuleSet

enum_ActionFailurePolicy := [ "CONTINUE", "DROP" ]
enum_MailFrom := [ "REPLACE", "PRESERVE" ]
enum_RuleBooleanEmailAttribute := [ "READ_RECEIPT_REQUESTED", "TLS", "TLS_WRAPPED" ]
enum_RuleBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_RuleDmarcOperator := [ "EQUALS", "NOT_EQUALS" ]
enum_RuleDmarcPolicy := [ "NONE", "QUARANTINE", "REJECT" ]
enum_RuleIpEmailAttribute := [ "SOURCE_IP" ]
enum_RuleIpOperator := [ "CIDR_MATCHES", "NOT_CIDR_MATCHES" ]
enum_RuleNumberEmailAttribute := [ "MESSAGE_SIZE" ]
enum_RuleNumberOperator := [ "EQUALS", "NOT_EQUALS", "LESS_THAN", "GREATER_THAN", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL" ]
enum_RuleStringEmailAttribute := [ "MAIL_FROM", "HELO", "RECIPIENT", "SENDER", "FROM", "SUBJECT", "TO", "CC" ]
enum_RuleStringOperator := [ "EQUALS", "NOT_EQUALS", "STARTS_WITH", "ENDS_WITH", "CONTAINS" ]
enum_RuleVerdict := [ "PASS", "FAIL", "GRAY", "PROCESSING_FAILED" ]
enum_RuleVerdictAttribute := [ "SPF", "DKIM" ]
enum_RuleVerdictOperator := [ "EQUALS", "NOT_EQUALS" ]

valid {
    input.Body.RuleSetId == STRING
    input.Body.RuleSetName == STRING
    input.Body.Rules[_].Actions[_].AddHeader.HeaderName == STRING
    input.Body.Rules[_].Actions[_].AddHeader.HeaderValue == STRING
    input.Body.Rules[_].Actions[_].Archive.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Archive.TargetArchive == STRING
    input.Body.Rules[_].Actions[_].DeliverToMailbox.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].DeliverToMailbox.MailboxArn == STRING
    input.Body.Rules[_].Actions[_].DeliverToMailbox.RoleArn == STRING
    input.Body.Rules[_].Actions[_].Drop == {}
    input.Body.Rules[_].Actions[_].Relay.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Relay.MailFrom == enum_MailFrom[_]
    input.Body.Rules[_].Actions[_].Relay.Relay == STRING
    input.Body.Rules[_].Actions[_].ReplaceRecipient.ReplaceWith[_] == STRING
    input.Body.Rules[_].Actions[_].Send.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].Send.RoleArn == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.ActionFailurePolicy == enum_ActionFailurePolicy[_]
    input.Body.Rules[_].Actions[_].WriteToS3.RoleArn == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3Bucket == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3Prefix == STRING
    input.Body.Rules[_].Actions[_].WriteToS3.S3SseKmsKeyId == STRING
    input.Body.Rules[_].Conditions[_].BooleanExpression.Evaluate.Attribute == enum_RuleBooleanEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].BooleanExpression.Operator == enum_RuleBooleanOperator[_]
    input.Body.Rules[_].Conditions[_].DmarcExpression.Operator == enum_RuleDmarcOperator[_]
    input.Body.Rules[_].Conditions[_].DmarcExpression.Values[_] == enum_RuleDmarcPolicy[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Evaluate.Attribute == enum_RuleIpEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Operator == enum_RuleIpOperator[_]
    input.Body.Rules[_].Conditions[_].IpExpression.Values[_] == STRING
    input.Body.Rules[_].Conditions[_].NumberExpression.Evaluate.Attribute == enum_RuleNumberEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].NumberExpression.Operator == enum_RuleNumberOperator[_]
    input.Body.Rules[_].Conditions[_].NumberExpression.Value == DOUBLE
    input.Body.Rules[_].Conditions[_].StringExpression.Evaluate.Attribute == enum_RuleStringEmailAttribute[_]
    input.Body.Rules[_].Conditions[_].StringExpression.Operator == enum_RuleStringOperator[_]
    input.Body.Rules[_].Conditions[_].StringExpression.Values[_] == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.Rules[_].Conditions[_].VerdictExpression.Evaluate.Attribute == enum_RuleVerdictAttribute[_]
    input.Body.Rules[_].Conditions[_].VerdictExpression.Operator == enum_RuleVerdictOperator[_]
    input.Body.Rules[_].Conditions[_].VerdictExpression.Values[_] == enum_RuleVerdict[_]
    input.Body.Rules[_].Name == STRING
    input.Body.Rules[_].Unless[_].BooleanExpression.Evaluate.Attribute == enum_RuleBooleanEmailAttribute[_]
    input.Body.Rules[_].Unless[_].BooleanExpression.Operator == enum_RuleBooleanOperator[_]
    input.Body.Rules[_].Unless[_].DmarcExpression.Operator == enum_RuleDmarcOperator[_]
    input.Body.Rules[_].Unless[_].DmarcExpression.Values[_] == enum_RuleDmarcPolicy[_]
    input.Body.Rules[_].Unless[_].IpExpression.Evaluate.Attribute == enum_RuleIpEmailAttribute[_]
    input.Body.Rules[_].Unless[_].IpExpression.Operator == enum_RuleIpOperator[_]
    input.Body.Rules[_].Unless[_].IpExpression.Values[_] == STRING
    input.Body.Rules[_].Unless[_].NumberExpression.Evaluate.Attribute == enum_RuleNumberEmailAttribute[_]
    input.Body.Rules[_].Unless[_].NumberExpression.Operator == enum_RuleNumberOperator[_]
    input.Body.Rules[_].Unless[_].NumberExpression.Value == DOUBLE
    input.Body.Rules[_].Unless[_].StringExpression.Evaluate.Attribute == enum_RuleStringEmailAttribute[_]
    input.Body.Rules[_].Unless[_].StringExpression.Operator == enum_RuleStringOperator[_]
    input.Body.Rules[_].Unless[_].StringExpression.Values[_] == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.Rules[_].Unless[_].VerdictExpression.Evaluate.Attribute == enum_RuleVerdictAttribute[_]
    input.Body.Rules[_].Unless[_].VerdictExpression.Operator == enum_RuleVerdictOperator[_]
    input.Body.Rules[_].Unless[_].VerdictExpression.Values[_] == enum_RuleVerdict[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTrafficPolicy

enum_AcceptAction := [ "ALLOW", "DENY" ]
enum_IngressBooleanOperator := [ "IS_TRUE", "IS_FALSE" ]
enum_IngressIpOperator := [ "CIDR_MATCHES", "NOT_CIDR_MATCHES" ]
enum_IngressIpv4Attribute := [ "SENDER_IP" ]
enum_IngressStringEmailAttribute := [ "RECIPIENT" ]
enum_IngressStringOperator := [ "EQUALS", "NOT_EQUALS", "STARTS_WITH", "ENDS_WITH", "CONTAINS" ]
enum_IngressTlsAttribute := [ "TLS_PROTOCOL" ]
enum_IngressTlsProtocolAttribute := [ "TLS1_2", "TLS1_3" ]
enum_IngressTlsProtocolOperator := [ "MINIMUM_TLS_VERSION", "IS" ]

valid {
    input.Body.DefaultAction == enum_AcceptAction[_]
    input.Body.MaxMessageSizeBytes == INTEGER
    input.Body.PolicyStatements[_].Action == enum_AcceptAction[_]
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Evaluate.Analysis.Analyzer == STRING
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Evaluate.Analysis.ResultField == STRING
    input.Body.PolicyStatements[_].Conditions[_].BooleanExpression.Operator == enum_IngressBooleanOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Evaluate.Attribute == enum_IngressIpv4Attribute[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Operator == enum_IngressIpOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].IpExpression.Values[_] == STRING
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Evaluate.Attribute == enum_IngressStringEmailAttribute[_]
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Operator == enum_IngressStringOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].StringExpression.Values[_] == STRING
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Evaluate.Attribute == enum_IngressTlsAttribute[_]
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Operator == enum_IngressTlsProtocolOperator[_]
    input.Body.PolicyStatements[_].Conditions[_].TlsExpression.Value == enum_IngressTlsProtocolAttribute[_]
    input.Body.TrafficPolicyId == STRING
    input.Body.TrafficPolicyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}