BatchUpdateCluster

valid {
    input.Body.ClusterNames[_] == STRING
    input.Body.ServiceUpdate.ServiceUpdateNameToApply == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CopySnapshot

valid {
    input.Body.SourceSnapshotName == STRING
    input.Body.TargetSnapshotName == STRING
    input.Body.TargetBucket == 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
}

CreateACL

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

CreateCluster

valid {
    input.Body.ClusterName == STRING
    input.Body.NodeType == STRING
    input.Body.MultiRegionClusterName == STRING
    input.Body.ParameterGroupName == STRING
    input.Body.Description == STRING
    input.Body.NumShards == INTEGER
    input.Body.NumReplicasPerShard == INTEGER
    input.Body.SubnetGroupName == STRING
    input.Body.SecurityGroupIds[_] == STRING
    input.Body.MaintenanceWindow == STRING
    input.Body.Port == INTEGER
    input.Body.SnsTopicArn == STRING
    input.Body.TLSEnabled == BOOLEAN
    input.Body.KmsKeyId == STRING
    input.Body.SnapshotArns[_] == STRING
    input.Body.SnapshotName == STRING
    input.Body.SnapshotRetentionLimit == INTEGER
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.SnapshotWindow == STRING
    input.Body.ACLName == STRING
    input.Body.Engine == STRING
    input.Body.EngineVersion == STRING
    input.Body.AutoMinorVersionUpgrade == BOOLEAN
    input.Body.DataTiering == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateMultiRegionCluster

valid {
    input.Body.MultiRegionClusterNameSuffix == STRING
    input.Body.Description == STRING
    input.Body.Engine == STRING
    input.Body.EngineVersion == STRING
    input.Body.NodeType == STRING
    input.Body.MultiRegionParameterGroupName == STRING
    input.Body.NumShards == INTEGER
    input.Body.TLSEnabled == BOOLEAN
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateParameterGroup

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

CreateSnapshot

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

CreateSubnetGroup

valid {
    input.Body.SubnetGroupName == 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
}

CreateUser

enum_InputAuthenticationType := [ "password", "iam" ]

valid {
    input.Body.UserName == STRING
    input.Body.AuthenticationMode.Type == enum_InputAuthenticationType[_]
    input.Body.AuthenticationMode.Passwords[_] == STRING
    input.Body.AccessString == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteACL

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

DeleteCluster

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

DeleteMultiRegionCluster

valid {
    input.Body.MultiRegionClusterName == 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
}

DeleteSnapshot

valid {
    input.Body.SnapshotName == 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
}

DeleteUser

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

DescribeACLs

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

DescribeClusters

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

DescribeEngineVersions

valid {
    input.Body.Engine == STRING
    input.Body.EngineVersion == STRING
    input.Body.ParameterGroupFamily == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.DefaultOnly == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEvents

enum_SourceType := [ "node", "parameter-group", "subnet-group", "cluster", "user", "acl" ]

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
}

DescribeMultiRegionClusters

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

DescribeParameterGroups

valid {
    input.Body.ParameterGroupName == 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.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReservedNodes

valid {
    input.Body.ReservationId == STRING
    input.Body.ReservedNodesOfferingId == STRING
    input.Body.NodeType == STRING
    input.Body.Duration == STRING
    input.Body.OfferingType == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeReservedNodesOfferings

valid {
    input.Body.ReservedNodesOfferingId == STRING
    input.Body.NodeType == STRING
    input.Body.Duration == STRING
    input.Body.OfferingType == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeServiceUpdates

enum_ServiceUpdateStatus := [ "available", "in-progress", "complete", "scheduled" ]

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

DescribeSnapshots

valid {
    input.Body.ClusterName == STRING
    input.Body.SnapshotName == STRING
    input.Body.Source == STRING
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.Body.ShowDetail == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeSubnetGroups

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

DescribeUsers

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

FailoverShard

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

ListAllowedMultiRegionClusterUpdates

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

ListAllowedNodeTypeUpdates

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

ListTags

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

PurchaseReservedNodesOffering

valid {
    input.Body.ReservedNodesOfferingId == STRING
    input.Body.ReservationId == STRING
    input.Body.NodeCount == INTEGER
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResetParameterGroup

valid {
    input.Body.ParameterGroupName == STRING
    input.Body.AllParameters == BOOLEAN
    input.Body.ParameterNames[_] == 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
}

UpdateACL

valid {
    input.Body.ACLName == STRING
    input.Body.UserNamesToAdd[_] == STRING
    input.Body.UserNamesToRemove[_] == 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.SecurityGroupIds[_] == STRING
    input.Body.MaintenanceWindow == STRING
    input.Body.SnsTopicArn == STRING
    input.Body.SnsTopicStatus == STRING
    input.Body.ParameterGroupName == STRING
    input.Body.SnapshotWindow == STRING
    input.Body.SnapshotRetentionLimit == INTEGER
    input.Body.NodeType == STRING
    input.Body.Engine == STRING
    input.Body.EngineVersion == STRING
    input.Body.ReplicaConfiguration.ReplicaCount == INTEGER
    input.Body.ShardConfiguration.ShardCount == INTEGER
    input.Body.ACLName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateMultiRegionCluster

enum_UpdateStrategy := [ "coordinated", "uncoordinated" ]

valid {
    input.Body.MultiRegionClusterName == STRING
    input.Body.NodeType == STRING
    input.Body.Description == STRING
    input.Body.EngineVersion == STRING
    input.Body.ShardConfiguration.ShardCount == INTEGER
    input.Body.MultiRegionParameterGroupName == STRING
    input.Body.UpdateStrategy == enum_UpdateStrategy[_]
    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
}

UpdateUser

enum_InputAuthenticationType := [ "password", "iam" ]

valid {
    input.Body.UserName == STRING
    input.Body.AuthenticationMode.Type == enum_InputAuthenticationType[_]
    input.Body.AuthenticationMode.Passwords[_] == STRING
    input.Body.AccessString == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}