ROUTE53RESOLVER

AssociateFirewallRuleGroup

enum_MutationProtectionStatus := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.CreatorRequestId == STRING
    input.Body.FirewallRuleGroupId == STRING
    input.Body.VpcId == STRING
    input.Body.Priority == INTEGER
    input.Body.Name == STRING
    input.Body.MutationProtection == enum_MutationProtectionStatus[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateResolverEndpointIpAddress

valid {
    input.Body.ResolverEndpointId == STRING
    input.Body.IpAddress.IpId == STRING
    input.Body.IpAddress.SubnetId == STRING
    input.Body.IpAddress.Ip == STRING
    input.Body.IpAddress.Ipv6 == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateResolverQueryLogConfig

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

AssociateResolverRule

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

CreateFirewallDomainList

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

CreateFirewallRule

enum_Action := [ "ALLOW", "BLOCK", "ALERT" ]
enum_BlockOverrideDnsType := [ "CNAME" ]
enum_BlockResponse := [ "NODATA", "NXDOMAIN", "OVERRIDE" ]

valid {
    input.Body.CreatorRequestId == STRING
    input.Body.FirewallRuleGroupId == STRING
    input.Body.FirewallDomainListId == STRING
    input.Body.Priority == INTEGER
    input.Body.Action == enum_Action[_]
    input.Body.BlockResponse == enum_BlockResponse[_]
    input.Body.BlockOverrideDomain == STRING
    input.Body.BlockOverrideDnsType == enum_BlockOverrideDnsType[_]
    input.Body.BlockOverrideTtl == INTEGER
    input.Body.Name == STRING
    input.Body.Qtype == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFirewallRuleGroup

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

CreateOutpostResolver

valid {
    input.Body.CreatorRequestId == STRING
    input.Body.Name == STRING
    input.Body.InstanceCount == INTEGER
    input.Body.PreferredInstanceType == STRING
    input.Body.OutpostArn == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateResolverEndpoint

enum_Protocol := [ "DoH", "Do53", "DoH-FIPS" ]
enum_ResolverEndpointDirection := [ "INBOUND", "OUTBOUND" ]
enum_ResolverEndpointType := [ "IPV6", "IPV4", "DUALSTACK" ]

valid {
    input.Body.CreatorRequestId == STRING
    input.Body.Name == STRING
    input.Body.SecurityGroupIds[_] == STRING
    input.Body.Direction == enum_ResolverEndpointDirection[_]
    input.Body.IpAddresses[_].SubnetId == STRING
    input.Body.IpAddresses[_].Ip == STRING
    input.Body.IpAddresses[_].Ipv6 == STRING
    input.Body.OutpostArn == STRING
    input.Body.PreferredInstanceType == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ResolverEndpointType == enum_ResolverEndpointType[_]
    input.Body.Protocols[_] == enum_Protocol[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateResolverQueryLogConfig

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

CreateResolverRule

enum_Protocol := [ "DoH", "Do53", "DoH-FIPS" ]
enum_RuleTypeOption := [ "FORWARD", "SYSTEM", "RECURSIVE" ]

valid {
    input.Body.CreatorRequestId == STRING
    input.Body.Name == STRING
    input.Body.RuleType == enum_RuleTypeOption[_]
    input.Body.DomainName == STRING
    input.Body.TargetIps[_].Ip == STRING
    input.Body.TargetIps[_].Port == INTEGER
    input.Body.TargetIps[_].Ipv6 == STRING
    input.Body.TargetIps[_].Protocol == enum_Protocol[_]
    input.Body.ResolverEndpointId == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteFirewallDomainList

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

DeleteFirewallRule

valid {
    input.Body.FirewallRuleGroupId == STRING
    input.Body.FirewallDomainListId == STRING
    input.Body.Qtype == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteFirewallRuleGroup

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

DeleteOutpostResolver

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

DeleteResolverEndpoint

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

DeleteResolverQueryLogConfig

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

DeleteResolverRule

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

DisassociateFirewallRuleGroup

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

DisassociateResolverEndpointIpAddress

valid {
    input.Body.ResolverEndpointId == STRING
    input.Body.IpAddress.IpId == STRING
    input.Body.IpAddress.SubnetId == STRING
    input.Body.IpAddress.Ip == STRING
    input.Body.IpAddress.Ipv6 == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateResolverQueryLogConfig

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

DisassociateResolverRule

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

GetFirewallConfig

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

GetFirewallDomainList

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

GetFirewallRuleGroup

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

GetFirewallRuleGroupAssociation

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

GetFirewallRuleGroupPolicy

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

GetOutpostResolver

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

GetResolverConfig

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

GetResolverDnssecConfig

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

GetResolverEndpoint

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

GetResolverQueryLogConfig

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

GetResolverQueryLogConfigAssociation

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

GetResolverQueryLogConfigPolicy

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

GetResolverRule

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

GetResolverRuleAssociation

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

GetResolverRulePolicy

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

ImportFirewallDomains

enum_FirewallDomainImportOperation := [ "REPLACE" ]

valid {
    input.Body.FirewallDomainListId == STRING
    input.Body.Operation == enum_FirewallDomainImportOperation[_]
    input.Body.DomainFileUrl == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFirewallConfigs

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

ListFirewallDomainLists

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

ListFirewallDomains

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

ListFirewallRuleGroupAssociations

enum_FirewallRuleGroupAssociationStatus := [ "COMPLETE", "DELETING", "UPDATING" ]

valid {
    input.Body.FirewallRuleGroupId == STRING
    input.Body.VpcId == STRING
    input.Body.Priority == INTEGER
    input.Body.Status == enum_FirewallRuleGroupAssociationStatus[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFirewallRuleGroups

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

ListFirewallRules

enum_Action := [ "ALLOW", "BLOCK", "ALERT" ]

valid {
    input.Body.FirewallRuleGroupId == STRING
    input.Body.Priority == INTEGER
    input.Body.Action == enum_Action[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListOutpostResolvers

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

ListResolverConfigs

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

ListResolverDnssecConfigs

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResolverEndpointIpAddresses

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

ListResolverEndpoints

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResolverQueryLogConfigAssociations

enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.Body.SortBy == STRING
    input.Body.SortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResolverQueryLogConfigs

enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.Body.SortBy == STRING
    input.Body.SortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResolverRuleAssociations

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResolverRules

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

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

PutFirewallRuleGroupPolicy

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

PutResolverQueryLogConfigPolicy

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

PutResolverRulePolicy

valid {
    input.Body.Arn == STRING
    input.Body.ResolverRulePolicy == 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
}

UpdateFirewallConfig

enum_FirewallFailOpenStatus := [ "ENABLED", "DISABLED", "USE_LOCAL_RESOURCE_SETTING" ]

valid {
    input.Body.ResourceId == STRING
    input.Body.FirewallFailOpen == enum_FirewallFailOpenStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFirewallDomains

enum_FirewallDomainUpdateOperation := [ "ADD", "REMOVE", "REPLACE" ]

valid {
    input.Body.FirewallDomainListId == STRING
    input.Body.Operation == enum_FirewallDomainUpdateOperation[_]
    input.Body.Domains[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFirewallRule

enum_Action := [ "ALLOW", "BLOCK", "ALERT" ]
enum_BlockOverrideDnsType := [ "CNAME" ]
enum_BlockResponse := [ "NODATA", "NXDOMAIN", "OVERRIDE" ]

valid {
    input.Body.FirewallRuleGroupId == STRING
    input.Body.FirewallDomainListId == STRING
    input.Body.Priority == INTEGER
    input.Body.Action == enum_Action[_]
    input.Body.BlockResponse == enum_BlockResponse[_]
    input.Body.BlockOverrideDomain == STRING
    input.Body.BlockOverrideDnsType == enum_BlockOverrideDnsType[_]
    input.Body.BlockOverrideTtl == INTEGER
    input.Body.Name == STRING
    input.Body.Qtype == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFirewallRuleGroupAssociation

enum_MutationProtectionStatus := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.FirewallRuleGroupAssociationId == STRING
    input.Body.Priority == INTEGER
    input.Body.MutationProtection == enum_MutationProtectionStatus[_]
    input.Body.Name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateOutpostResolver

valid {
    input.Body.Id == STRING
    input.Body.Name == STRING
    input.Body.InstanceCount == INTEGER
    input.Body.PreferredInstanceType == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResolverConfig

enum_AutodefinedReverseFlag := [ "ENABLE", "DISABLE", "USE_LOCAL_RESOURCE_SETTING" ]

valid {
    input.Body.ResourceId == STRING
    input.Body.AutodefinedReverseFlag == enum_AutodefinedReverseFlag[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResolverDnssecConfig

enum_Validation := [ "ENABLE", "DISABLE", "USE_LOCAL_RESOURCE_SETTING" ]

valid {
    input.Body.ResourceId == STRING
    input.Body.Validation == enum_Validation[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResolverEndpoint

enum_Protocol := [ "DoH", "Do53", "DoH-FIPS" ]
enum_ResolverEndpointType := [ "IPV6", "IPV4", "DUALSTACK" ]

valid {
    input.Body.ResolverEndpointId == STRING
    input.Body.Name == STRING
    input.Body.ResolverEndpointType == enum_ResolverEndpointType[_]
    input.Body.UpdateIpAddresses[_].IpId == STRING
    input.Body.UpdateIpAddresses[_].Ipv6 == STRING
    input.Body.Protocols[_] == enum_Protocol[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResolverRule

enum_Protocol := [ "DoH", "Do53", "DoH-FIPS" ]

valid {
    input.Body.ResolverRuleId == STRING
    input.Body.Config.Name == STRING
    input.Body.Config.TargetIps[_].Ip == STRING
    input.Body.Config.TargetIps[_].Port == INTEGER
    input.Body.Config.TargetIps[_].Ipv6 == STRING
    input.Body.Config.TargetIps[_].Protocol == enum_Protocol[_]
    input.Body.Config.ResolverEndpointId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}