CreateCluster

enum_ClusterEndpointEncryptionType := [ "NONE", "TLS" ]

valid {
    input.Body.ClusterName == STRING
    input.Body.NodeType == STRING
    input.Body.Description == STRING
    input.Body.ReplicationFactor == INTEGER
    input.Body.AvailabilityZones[_] == STRING
    input.Body.SubnetGroupName == STRING
    input.Body.SecurityGroupIds[_] == STRING
    input.Body.PreferredMaintenanceWindow == STRING
    input.Body.NotificationTopicArn == STRING
    input.Body.IamRoleArn == STRING
    input.Body.ParameterGroupName == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.SSESpecification.Enabled == BOOLEAN
    input.Body.ClusterEndpointEncryptionType == enum_ClusterEndpointEncryptionType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateParameterGroup

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

CreateSubnetGroup

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

DecreaseReplicationFactor

valid {
    input.Body.ClusterName == STRING
    input.Body.NewReplicationFactor == INTEGER
    input.Body.AvailabilityZones[_] == STRING
    input.Body.NodeIdsToRemove[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteCluster

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

DeleteParameterGroup

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

DeleteSubnetGroup

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

DescribeClusters

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

DescribeDefaultParameters

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

DescribeEvents

enum_SourceType := [ "CLUSTER", "PARAMETER_GROUP", "SUBNET_GROUP" ]

valid {
    input.Body.SourceName == STRING
    input.Body.SourceType == enum_SourceType[_]
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Duration == INTEGER
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeParameterGroups

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

DescribeParameters

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

DescribeSubnetGroups

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

IncreaseReplicationFactor

valid {
    input.Body.ClusterName == STRING
    input.Body.NewReplicationFactor == INTEGER
    input.Body.AvailabilityZones[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTags

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

RebootNode

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

TagResource

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
}

UntagResource

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

UpdateCluster

valid {
    input.Body.ClusterName == STRING
    input.Body.Description == STRING
    input.Body.PreferredMaintenanceWindow == STRING
    input.Body.NotificationTopicArn == STRING
    input.Body.NotificationTopicStatus == STRING
    input.Body.ParameterGroupName == STRING
    input.Body.SecurityGroupIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateParameterGroup

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.ParameterNameValues[_].ParameterName == STRING
    input.Body.ParameterNameValues[_].ParameterValue == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSubnetGroup

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