AcceptReservedNodeExchange

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

AddPartner

valid {
    input.Body.AccountId == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DatabaseName == STRING
    input.Body.PartnerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateDataShareConsumer

valid {
    input.Body.DataShareArn == STRING
    input.Body.AssociateEntireAccount == BOOLEAN
    input.Body.ConsumerArn == STRING
    input.Body.ConsumerRegion == STRING
    input.Body.AllowWrites == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AuthorizeClusterSecurityGroupIngress

valid {
    input.Body.ClusterSecurityGroupName == STRING
    input.Body.CIDRIP == STRING
    input.Body.EC2SecurityGroupName == STRING
    input.Body.EC2SecurityGroupOwnerId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AuthorizeDataShare

valid {
    input.Body.DataShareArn == STRING
    input.Body.ConsumerIdentifier == STRING
    input.Body.AllowWrites == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AuthorizeEndpointAccess

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

AuthorizeSnapshotAccess

valid {
    input.Body.SnapshotIdentifier == STRING
    input.Body.SnapshotArn == STRING
    input.Body.SnapshotClusterIdentifier == STRING
    input.Body.AccountWithRestoreAccess == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteClusterSnapshots

valid {
    input.Body.Identifiers[_].SnapshotIdentifier == STRING
    input.Body.Identifiers[_].SnapshotClusterIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchModifyClusterSnapshots

valid {
    input.Body.SnapshotIdentifierList[_] == STRING
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.Force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CancelResize

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

CopyClusterSnapshot

valid {
    input.Body.SourceSnapshotIdentifier == STRING
    input.Body.SourceSnapshotClusterIdentifier == STRING
    input.Body.TargetSnapshotIdentifier == STRING
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAuthenticationProfile

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

CreateCluster

enum_AquaConfigurationStatus := [ "enabled", "disabled", "auto" ]

valid {
    input.Body.DBName == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.ClusterType == STRING
    input.Body.NodeType == STRING
    input.Body.MasterUsername == STRING
    input.Body.MasterUserPassword == STRING
    input.Body.ClusterSecurityGroups[_] == STRING
    input.Body.VpcSecurityGroupIds[_] == STRING
    input.Body.ClusterSubnetGroupName == STRING
    input.Body.AvailabilityZone == STRING
    input.Body.PreferredMaintenanceWindow == STRING
    input.Body.ClusterParameterGroupName == STRING
    input.Body.AutomatedSnapshotRetentionPeriod == INTEGER
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.Port == INTEGER
    input.Body.ClusterVersion == STRING
    input.Body.AllowVersionUpgrade == BOOLEAN
    input.Body.NumberOfNodes == INTEGER
    input.Body.PubliclyAccessible == BOOLEAN
    input.Body.Encrypted == BOOLEAN
    input.Body.HsmClientCertificateIdentifier == STRING
    input.Body.HsmConfigurationIdentifier == STRING
    input.Body.ElasticIp == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.KmsKeyId == STRING
    input.Body.EnhancedVpcRouting == BOOLEAN
    input.Body.AdditionalInfo == STRING
    input.Body.IamRoles[_] == STRING
    input.Body.MaintenanceTrackName == STRING
    input.Body.SnapshotScheduleIdentifier == STRING
    input.Body.AvailabilityZoneRelocation == BOOLEAN
    input.Body.AquaConfigurationStatus == enum_AquaConfigurationStatus[_]
    input.Body.DefaultIamRoleArn == STRING
    input.Body.LoadSampleData == STRING
    input.Body.ManageMasterPassword == BOOLEAN
    input.Body.MasterPasswordSecretKmsKeyId == STRING
    input.Body.IpAddressType == STRING
    input.Body.MultiAZ == BOOLEAN
    input.Body.RedshiftIdcApplicationArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateClusterParameterGroup

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

CreateClusterSecurityGroup

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

CreateClusterSnapshot

valid {
    input.Body.SnapshotIdentifier == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateClusterSubnetGroup

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

CreateCustomDomainAssociation

valid {
    input.Body.CustomDomainName == STRING
    input.Body.CustomDomainCertificateArn == STRING
    input.Body.ClusterIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateEndpointAccess

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ResourceOwner == STRING
    input.Body.EndpointName == STRING
    input.Body.SubnetGroupName == STRING
    input.Body.VpcSecurityGroupIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateEventSubscription

valid {
    input.Body.SubscriptionName == STRING
    input.Body.SnsTopicArn == STRING
    input.Body.SourceType == STRING
    input.Body.SourceIds[_] == STRING
    input.Body.EventCategories[_] == STRING
    input.Body.Severity == STRING
    input.Body.Enabled == BOOLEAN
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateHsmClientCertificate

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

CreateHsmConfiguration

valid {
    input.Body.HsmConfigurationIdentifier == STRING
    input.Body.Description == STRING
    input.Body.HsmIpAddress == STRING
    input.Body.HsmPartitionName == STRING
    input.Body.HsmPartitionPassword == STRING
    input.Body.HsmServerPublicCertificate == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateIntegration

valid {
    input.Body.SourceArn == STRING
    input.Body.TargetArn == STRING
    input.Body.IntegrationName == STRING
    input.Body.KMSKeyId == STRING
    input.Body.TagList[_].Key == STRING
    input.Body.TagList[_].Value == STRING
    input.Body.AdditionalEncryptionContext.STRING == STRING
    input.Body.Description == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRedshiftIdcApplication

enum_ServiceAuthorization := [ "Enabled", "Disabled" ]

valid {
    input.Body.IdcInstanceArn == STRING
    input.Body.RedshiftIdcApplicationName == STRING
    input.Body.IdentityNamespace == STRING
    input.Body.IdcDisplayName == STRING
    input.Body.IamRoleArn == STRING
    input.Body.AuthorizedTokenIssuerList[_].TrustedTokenIssuerArn == STRING
    input.Body.AuthorizedTokenIssuerList[_].AuthorizedAudiencesList[_] == STRING
    input.Body.ServiceIntegrations[_].LakeFormation[_].LakeFormationQuery.Authorization == enum_ServiceAuthorization[_]
    input.Body.ServiceIntegrations[_].S3AccessGrants[_].ReadWriteAccess.Authorization == enum_ServiceAuthorization[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateScheduledAction

valid {
    input.Body.ScheduledActionName == STRING
    input.Body.TargetAction.ResizeCluster.ClusterIdentifier == STRING
    input.Body.TargetAction.ResizeCluster.ClusterType == STRING
    input.Body.TargetAction.ResizeCluster.NodeType == STRING
    input.Body.TargetAction.ResizeCluster.NumberOfNodes == INTEGER
    input.Body.TargetAction.ResizeCluster.Classic == BOOLEAN
    input.Body.TargetAction.ResizeCluster.ReservedNodeId == STRING
    input.Body.TargetAction.ResizeCluster.TargetReservedNodeOfferingId == STRING
    input.Body.TargetAction.PauseCluster.ClusterIdentifier == STRING
    input.Body.TargetAction.ResumeCluster.ClusterIdentifier == STRING
    input.Body.Schedule == STRING
    input.Body.IamRole == STRING
    input.Body.ScheduledActionDescription == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Enable == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSnapshotCopyGrant

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

CreateSnapshotSchedule

valid {
    input.Body.ScheduleDefinitions[_] == STRING
    input.Body.ScheduleIdentifier == STRING
    input.Body.ScheduleDescription == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.DryRun == BOOLEAN
    input.Body.NextInvocations == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTags

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

CreateUsageLimit

enum_UsageLimitBreachAction := [ "log", "emit-metric", "disable" ]
enum_UsageLimitFeatureType := [ "spectrum", "concurrency-scaling", "cross-region-datasharing" ]
enum_UsageLimitLimitType := [ "time", "data-scanned" ]
enum_UsageLimitPeriod := [ "daily", "weekly", "monthly" ]

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.FeatureType == enum_UsageLimitFeatureType[_]
    input.Body.LimitType == enum_UsageLimitLimitType[_]
    input.Body.Amount == LONG
    input.Body.Period == enum_UsageLimitPeriod[_]
    input.Body.BreachAction == enum_UsageLimitBreachAction[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeauthorizeDataShare

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

DeleteAuthenticationProfile

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

DeleteCluster

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.SkipFinalClusterSnapshot == BOOLEAN
    input.Body.FinalClusterSnapshotIdentifier == STRING
    input.Body.FinalClusterSnapshotRetentionPeriod == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteClusterParameterGroup

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

DeleteClusterSecurityGroup

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

DeleteClusterSnapshot

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

DeleteClusterSubnetGroup

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

DeleteCustomDomainAssociation

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

DeleteEndpointAccess

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

DeleteEventSubscription

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

DeleteHsmClientCertificate

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

DeleteHsmConfiguration

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

DeleteIntegration

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

DeletePartner

valid {
    input.Body.AccountId == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DatabaseName == STRING
    input.Body.PartnerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteRedshiftIdcApplication

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

DeleteResourcePolicy

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

DeleteScheduledAction

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

DeleteSnapshotCopyGrant

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

DeleteSnapshotSchedule

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

DeleteTags

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

DeleteUsageLimit

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

DeregisterNamespace

valid {
    input.Body.NamespaceIdentifier.ServerlessIdentifier.NamespaceIdentifier == STRING
    input.Body.NamespaceIdentifier.ServerlessIdentifier.WorkgroupIdentifier == STRING
    input.Body.NamespaceIdentifier.ProvisionedIdentifier.ClusterIdentifier == STRING
    input.Body.ConsumerIdentifiers[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAccountAttributes

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

DescribeAuthenticationProfiles

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

DescribeClusterDbRevisions

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterParameterGroups

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterParameters

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.Source == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterSecurityGroups

valid {
    input.Body.ClusterSecurityGroupName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterSnapshots

enum_SnapshotAttributeToSortBy := [ "SOURCE_TYPE", "TOTAL_SIZE", "CREATE_TIME" ]
enum_SortByOrder := [ "ASC", "DESC" ]

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.SnapshotIdentifier == STRING
    input.Body.SnapshotArn == STRING
    input.Body.SnapshotType == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.OwnerAccount == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.Body.ClusterExists == BOOLEAN
    input.Body.SortingEntities[_].Attribute == enum_SnapshotAttributeToSortBy[_]
    input.Body.SortingEntities[_].SortOrder == enum_SortByOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterSubnetGroups

valid {
    input.Body.ClusterSubnetGroupName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterTracks

valid {
    input.Body.MaintenanceTrackName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusterVersions

valid {
    input.Body.ClusterVersion == STRING
    input.Body.ClusterParameterGroupFamily == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeClusters

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeCustomDomainAssociations

valid {
    input.Body.CustomDomainName == STRING
    input.Body.CustomDomainCertificateArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDataShares

valid {
    input.Body.DataShareArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDataSharesForConsumer

enum_DataShareStatusForConsumer := [ "ACTIVE", "AVAILABLE" ]

valid {
    input.Body.ConsumerArn == STRING
    input.Body.Status == enum_DataShareStatusForConsumer[_]
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDataSharesForProducer

enum_DataShareStatusForProducer := [ "ACTIVE", "AUTHORIZED", "PENDING_AUTHORIZATION", "DEAUTHORIZED", "REJECTED" ]

valid {
    input.Body.ProducerArn == STRING
    input.Body.Status == enum_DataShareStatusForProducer[_]
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeDefaultClusterParameters

valid {
    input.Body.ParameterGroupFamily == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEndpointAccess

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ResourceOwner == STRING
    input.Body.EndpointName == STRING
    input.Body.VpcId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEndpointAuthorization

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.Account == STRING
    input.Body.Grantee == BOOLEAN
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEventCategories

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

DescribeEventSubscriptions

valid {
    input.Body.SubscriptionName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEvents

enum_SourceType := [ "cluster", "cluster-parameter-group", "cluster-security-group", "cluster-snapshot", "scheduled-action" ]

valid {
    input.Body.SourceIdentifier == STRING
    input.Body.SourceType == enum_SourceType[_]
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Duration == INTEGER
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeHsmClientCertificates

valid {
    input.Body.HsmClientCertificateIdentifier == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeHsmConfigurations

valid {
    input.Body.HsmConfigurationIdentifier == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeInboundIntegrations

valid {
    input.Body.IntegrationArn == STRING
    input.Body.TargetArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeIntegrations

enum_DescribeIntegrationsFilterName := [ "integration-arn", "source-arn", "source-types", "status" ]

valid {
    input.Body.IntegrationArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.Filters[_].Name == enum_DescribeIntegrationsFilterName[_]
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLoggingStatus

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

DescribeNodeConfigurationOptions

enum_ActionType := [ "restore-cluster", "recommend-node-config", "resize-cluster" ]
enum_NodeConfigurationOptionsFilterName := [ "NodeType", "NumberOfNodes", "EstimatedDiskUtilizationPercent", "Mode" ]
enum_OperatorType := [ "eq", "lt", "gt", "le", "ge", "in", "between" ]

valid {
    input.Body.ActionType == enum_ActionType[_]
    input.Body.ClusterIdentifier == STRING
    input.Body.SnapshotIdentifier == STRING
    input.Body.SnapshotArn == STRING
    input.Body.OwnerAccount == STRING
    input.Body.Filter[_].Name == enum_NodeConfigurationOptionsFilterName[_]
    input.Body.Filter[_].Operator == enum_OperatorType[_]
    input.Body.Filter[_].Value[_] == STRING
    input.Body.Marker == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeOrderableClusterOptions

valid {
    input.Body.ClusterVersion == STRING
    input.Body.NodeType == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribePartners

valid {
    input.Body.AccountId == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DatabaseName == STRING
    input.Body.PartnerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeRedshiftIdcApplications

valid {
    input.Body.RedshiftIdcApplicationArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReservedNodeExchangeStatus

valid {
    input.Body.ReservedNodeId == STRING
    input.Body.ReservedNodeExchangeRequestId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReservedNodeOfferings

valid {
    input.Body.ReservedNodeOfferingId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReservedNodes

valid {
    input.Body.ReservedNodeId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeResize

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

DescribeScheduledActions

enum_ScheduledActionFilterName := [ "cluster-identifier", "iam-role" ]
enum_ScheduledActionTypeValues := [ "ResizeCluster", "PauseCluster", "ResumeCluster" ]

valid {
    input.Body.ScheduledActionName == STRING
    input.Body.TargetActionType == enum_ScheduledActionTypeValues[_]
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Active == BOOLEAN
    input.Body.Filters[_].Name == enum_ScheduledActionFilterName[_]
    input.Body.Filters[_].Values[_] == STRING
    input.Body.Marker == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeSnapshotCopyGrants

valid {
    input.Body.SnapshotCopyGrantName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeSnapshotSchedules

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ScheduleIdentifier == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.Body.Marker == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeStorage

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ScheduleIdentifier == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.Body.Marker == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTableRestoreStatus

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.TableRestoreRequestId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTags

valid {
    input.Body.ResourceName == STRING
    input.Body.ResourceType == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeUsageLimits

enum_UsageLimitFeatureType := [ "spectrum", "concurrency-scaling", "cross-region-datasharing" ]

valid {
    input.Body.UsageLimitId == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.FeatureType == enum_UsageLimitFeatureType[_]
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.Body.TagKeys[_] == STRING
    input.Body.TagValues[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisableLogging

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

DisableSnapshotCopy

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

DisassociateDataShareConsumer

valid {
    input.Body.DataShareArn == STRING
    input.Body.DisassociateEntireAccount == BOOLEAN
    input.Body.ConsumerArn == STRING
    input.Body.ConsumerRegion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

EnableLogging

enum_LogDestinationType := [ "s3", "cloudwatch" ]

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.BucketName == STRING
    input.Body.S3KeyPrefix == STRING
    input.Body.LogDestinationType == enum_LogDestinationType[_]
    input.Body.LogExports[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

EnableSnapshotCopy

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.DestinationRegion == STRING
    input.Body.RetentionPeriod == INTEGER
    input.Body.SnapshotCopyGrantName == STRING
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

FailoverPrimaryCompute

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

GetClusterCredentials

valid {
    input.Body.DbUser == STRING
    input.Body.DbName == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DurationSeconds == INTEGER
    input.Body.AutoCreate == BOOLEAN
    input.Body.DbGroups[_] == STRING
    input.Body.CustomDomainName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetClusterCredentialsWithIAM

valid {
    input.Body.DbName == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DurationSeconds == INTEGER
    input.Body.CustomDomainName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetReservedNodeExchangeConfigurationOptions

enum_ReservedNodeExchangeActionType := [ "restore-cluster", "resize-cluster" ]

valid {
    input.Body.ActionType == enum_ReservedNodeExchangeActionType[_]
    input.Body.ClusterIdentifier == STRING
    input.Body.SnapshotIdentifier == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetReservedNodeExchangeOfferings

valid {
    input.Body.ReservedNodeId == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetResourcePolicy

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

ListRecommendations

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.NamespaceArn == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyAquaConfiguration

enum_AquaConfigurationStatus := [ "enabled", "disabled", "auto" ]

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.AquaConfigurationStatus == enum_AquaConfigurationStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyAuthenticationProfile

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

ModifyCluster

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ClusterType == STRING
    input.Body.NodeType == STRING
    input.Body.NumberOfNodes == INTEGER
    input.Body.ClusterSecurityGroups[_] == STRING
    input.Body.VpcSecurityGroupIds[_] == STRING
    input.Body.MasterUserPassword == STRING
    input.Body.ClusterParameterGroupName == STRING
    input.Body.AutomatedSnapshotRetentionPeriod == INTEGER
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.PreferredMaintenanceWindow == STRING
    input.Body.ClusterVersion == STRING
    input.Body.AllowVersionUpgrade == BOOLEAN
    input.Body.HsmClientCertificateIdentifier == STRING
    input.Body.HsmConfigurationIdentifier == STRING
    input.Body.NewClusterIdentifier == STRING
    input.Body.PubliclyAccessible == BOOLEAN
    input.Body.ElasticIp == STRING
    input.Body.EnhancedVpcRouting == BOOLEAN
    input.Body.MaintenanceTrackName == STRING
    input.Body.Encrypted == BOOLEAN
    input.Body.KmsKeyId == STRING
    input.Body.AvailabilityZoneRelocation == BOOLEAN
    input.Body.AvailabilityZone == STRING
    input.Body.Port == INTEGER
    input.Body.ManageMasterPassword == BOOLEAN
    input.Body.MasterPasswordSecretKmsKeyId == STRING
    input.Body.IpAddressType == STRING
    input.Body.MultiAZ == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterDbRevision

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

ModifyClusterIamRoles

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.AddIamRoles[_] == STRING
    input.Body.RemoveIamRoles[_] == STRING
    input.Body.DefaultIamRoleArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterMaintenance

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.DeferMaintenance == BOOLEAN
    input.Body.DeferMaintenanceIdentifier == STRING
    input.Body.DeferMaintenanceStartTime == TIMESTAMP
    input.Body.DeferMaintenanceEndTime == TIMESTAMP
    input.Body.DeferMaintenanceDuration == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterParameterGroup

enum_ParameterApplyType := [ "static", "dynamic" ]

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.Parameters[_].ParameterName == STRING
    input.Body.Parameters[_].ParameterValue == STRING
    input.Body.Parameters[_].Description == STRING
    input.Body.Parameters[_].Source == STRING
    input.Body.Parameters[_].DataType == STRING
    input.Body.Parameters[_].AllowedValues == STRING
    input.Body.Parameters[_].ApplyType == enum_ParameterApplyType[_]
    input.Body.Parameters[_].IsModifiable == BOOLEAN
    input.Body.Parameters[_].MinimumEngineVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterSnapshot

valid {
    input.Body.SnapshotIdentifier == STRING
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.Force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterSnapshotSchedule

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ScheduleIdentifier == STRING
    input.Body.DisassociateSchedule == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyClusterSubnetGroup

valid {
    input.Body.ClusterSubnetGroupName == STRING
    input.Body.Description == STRING
    input.Body.SubnetIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyCustomDomainAssociation

valid {
    input.Body.CustomDomainName == STRING
    input.Body.CustomDomainCertificateArn == STRING
    input.Body.ClusterIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyEndpointAccess

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

ModifyEventSubscription

valid {
    input.Body.SubscriptionName == STRING
    input.Body.SnsTopicArn == STRING
    input.Body.SourceType == STRING
    input.Body.SourceIds[_] == STRING
    input.Body.EventCategories[_] == STRING
    input.Body.Severity == STRING
    input.Body.Enabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyIntegration

valid {
    input.Body.IntegrationArn == STRING
    input.Body.Description == STRING
    input.Body.IntegrationName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyRedshiftIdcApplication

enum_ServiceAuthorization := [ "Enabled", "Disabled" ]

valid {
    input.Body.RedshiftIdcApplicationArn == STRING
    input.Body.IdentityNamespace == STRING
    input.Body.IamRoleArn == STRING
    input.Body.IdcDisplayName == STRING
    input.Body.AuthorizedTokenIssuerList[_].TrustedTokenIssuerArn == STRING
    input.Body.AuthorizedTokenIssuerList[_].AuthorizedAudiencesList[_] == STRING
    input.Body.ServiceIntegrations[_].LakeFormation[_].LakeFormationQuery.Authorization == enum_ServiceAuthorization[_]
    input.Body.ServiceIntegrations[_].S3AccessGrants[_].ReadWriteAccess.Authorization == enum_ServiceAuthorization[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifyScheduledAction

valid {
    input.Body.ScheduledActionName == STRING
    input.Body.TargetAction.ResizeCluster.ClusterIdentifier == STRING
    input.Body.TargetAction.ResizeCluster.ClusterType == STRING
    input.Body.TargetAction.ResizeCluster.NodeType == STRING
    input.Body.TargetAction.ResizeCluster.NumberOfNodes == INTEGER
    input.Body.TargetAction.ResizeCluster.Classic == BOOLEAN
    input.Body.TargetAction.ResizeCluster.ReservedNodeId == STRING
    input.Body.TargetAction.ResizeCluster.TargetReservedNodeOfferingId == STRING
    input.Body.TargetAction.PauseCluster.ClusterIdentifier == STRING
    input.Body.TargetAction.ResumeCluster.ClusterIdentifier == STRING
    input.Body.Schedule == STRING
    input.Body.IamRole == STRING
    input.Body.ScheduledActionDescription == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Enable == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifySnapshotCopyRetentionPeriod

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.RetentionPeriod == INTEGER
    input.Body.Manual == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ModifySnapshotSchedule

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

ModifyUsageLimit

enum_UsageLimitBreachAction := [ "log", "emit-metric", "disable" ]

valid {
    input.Body.UsageLimitId == STRING
    input.Body.Amount == LONG
    input.Body.BreachAction == enum_UsageLimitBreachAction[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PauseCluster

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

PurchaseReservedNodeOffering

valid {
    input.Body.ReservedNodeOfferingId == STRING
    input.Body.NodeCount == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutResourcePolicy

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

RebootCluster

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

RegisterNamespace

valid {
    input.Body.NamespaceIdentifier.ServerlessIdentifier.NamespaceIdentifier == STRING
    input.Body.NamespaceIdentifier.ServerlessIdentifier.WorkgroupIdentifier == STRING
    input.Body.NamespaceIdentifier.ProvisionedIdentifier.ClusterIdentifier == STRING
    input.Body.ConsumerIdentifiers[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RejectDataShare

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

ResetClusterParameterGroup

enum_ParameterApplyType := [ "static", "dynamic" ]

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.ResetAllParameters == BOOLEAN
    input.Body.Parameters[_].ParameterName == STRING
    input.Body.Parameters[_].ParameterValue == STRING
    input.Body.Parameters[_].Description == STRING
    input.Body.Parameters[_].Source == STRING
    input.Body.Parameters[_].DataType == STRING
    input.Body.Parameters[_].AllowedValues == STRING
    input.Body.Parameters[_].ApplyType == enum_ParameterApplyType[_]
    input.Body.Parameters[_].IsModifiable == BOOLEAN
    input.Body.Parameters[_].MinimumEngineVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResizeCluster

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.ClusterType == STRING
    input.Body.NodeType == STRING
    input.Body.NumberOfNodes == INTEGER
    input.Body.Classic == BOOLEAN
    input.Body.ReservedNodeId == STRING
    input.Body.TargetReservedNodeOfferingId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RestoreFromClusterSnapshot

enum_AquaConfigurationStatus := [ "enabled", "disabled", "auto" ]

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.SnapshotIdentifier == STRING
    input.Body.SnapshotArn == STRING
    input.Body.SnapshotClusterIdentifier == STRING
    input.Body.Port == INTEGER
    input.Body.AvailabilityZone == STRING
    input.Body.AllowVersionUpgrade == BOOLEAN
    input.Body.ClusterSubnetGroupName == STRING
    input.Body.PubliclyAccessible == BOOLEAN
    input.Body.OwnerAccount == STRING
    input.Body.HsmClientCertificateIdentifier == STRING
    input.Body.HsmConfigurationIdentifier == STRING
    input.Body.ElasticIp == STRING
    input.Body.ClusterParameterGroupName == STRING
    input.Body.ClusterSecurityGroups[_] == STRING
    input.Body.VpcSecurityGroupIds[_] == STRING
    input.Body.PreferredMaintenanceWindow == STRING
    input.Body.AutomatedSnapshotRetentionPeriod == INTEGER
    input.Body.ManualSnapshotRetentionPeriod == INTEGER
    input.Body.KmsKeyId == STRING
    input.Body.NodeType == STRING
    input.Body.EnhancedVpcRouting == BOOLEAN
    input.Body.AdditionalInfo == STRING
    input.Body.IamRoles[_] == STRING
    input.Body.MaintenanceTrackName == STRING
    input.Body.SnapshotScheduleIdentifier == STRING
    input.Body.NumberOfNodes == INTEGER
    input.Body.AvailabilityZoneRelocation == BOOLEAN
    input.Body.AquaConfigurationStatus == enum_AquaConfigurationStatus[_]
    input.Body.DefaultIamRoleArn == STRING
    input.Body.ReservedNodeId == STRING
    input.Body.TargetReservedNodeOfferingId == STRING
    input.Body.Encrypted == BOOLEAN
    input.Body.ManageMasterPassword == BOOLEAN
    input.Body.MasterPasswordSecretKmsKeyId == STRING
    input.Body.IpAddressType == STRING
    input.Body.MultiAZ == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RestoreTableFromClusterSnapshot

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.SnapshotIdentifier == STRING
    input.Body.SourceDatabaseName == STRING
    input.Body.SourceSchemaName == STRING
    input.Body.SourceTableName == STRING
    input.Body.TargetDatabaseName == STRING
    input.Body.TargetSchemaName == STRING
    input.Body.NewTableName == STRING
    input.Body.EnableCaseSensitiveIdentifier == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResumeCluster

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

RevokeClusterSecurityGroupIngress

valid {
    input.Body.ClusterSecurityGroupName == STRING
    input.Body.CIDRIP == STRING
    input.Body.EC2SecurityGroupName == STRING
    input.Body.EC2SecurityGroupOwnerId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RevokeEndpointAccess

valid {
    input.Body.ClusterIdentifier == STRING
    input.Body.Account == STRING
    input.Body.VpcIds[_] == STRING
    input.Body.Force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RevokeSnapshotAccess

valid {
    input.Body.SnapshotIdentifier == STRING
    input.Body.SnapshotArn == STRING
    input.Body.SnapshotClusterIdentifier == STRING
    input.Body.AccountWithRestoreAccess == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RotateEncryptionKey

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

UpdatePartnerStatus

enum_PartnerIntegrationStatus := [ "Active", "Inactive", "RuntimeFailure", "ConnectionFailure" ]

valid {
    input.Body.AccountId == STRING
    input.Body.ClusterIdentifier == STRING
    input.Body.DatabaseName == STRING
    input.Body.PartnerName == STRING
    input.Body.Status == enum_PartnerIntegrationStatus[_]
    input.Body.StatusMessage == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}