REKOGNITION

AssociateFaces

valid {
    input.Body.CollectionId == STRING
    input.Body.UserId == STRING
    input.Body.FaceIds[_] == STRING
    input.Body.UserMatchThreshold == FLOAT
    input.Body.ClientRequestToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CompareFaces

enum_QualityFilter := [ "NONE", "AUTO", "LOW", "MEDIUM", "HIGH" ]

valid {
    input.Body.SourceImage.Bytes == BLOB
    input.Body.SourceImage.S3Object.Bucket == STRING
    input.Body.SourceImage.S3Object.Name == STRING
    input.Body.SourceImage.S3Object.Version == STRING
    input.Body.TargetImage.Bytes == BLOB
    input.Body.TargetImage.S3Object.Bucket == STRING
    input.Body.TargetImage.S3Object.Name == STRING
    input.Body.TargetImage.S3Object.Version == STRING
    input.Body.SimilarityThreshold == FLOAT
    input.Body.QualityFilter == enum_QualityFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CopyProjectVersion

valid {
    input.Body.SourceProjectArn == STRING
    input.Body.SourceProjectVersionArn == STRING
    input.Body.DestinationProjectArn == STRING
    input.Body.VersionName == STRING
    input.Body.OutputConfig.S3Bucket == STRING
    input.Body.OutputConfig.S3KeyPrefix == STRING
    input.Body.Tags.STRING == STRING
    input.Body.KmsKeyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateCollection

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

CreateDataset

enum_DatasetType := [ "TRAIN", "TEST" ]

valid {
    input.Body.DatasetSource.GroundTruthManifest.S3Object.Bucket == STRING
    input.Body.DatasetSource.GroundTruthManifest.S3Object.Name == STRING
    input.Body.DatasetSource.GroundTruthManifest.S3Object.Version == STRING
    input.Body.DatasetSource.DatasetArn == STRING
    input.Body.DatasetType == enum_DatasetType[_]
    input.Body.ProjectArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFaceLivenessSession

valid {
    input.Body.KmsKeyId == STRING
    input.Body.Settings.OutputConfig.S3Bucket == STRING
    input.Body.Settings.OutputConfig.S3KeyPrefix == STRING
    input.Body.Settings.AuditImagesLimit == INTEGER
    input.Body.ClientRequestToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateProject

enum_CustomizationFeature := [ "CONTENT_MODERATION", "CUSTOM_LABELS" ]
enum_ProjectAutoUpdate := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.ProjectName == STRING
    input.Body.Feature == enum_CustomizationFeature[_]
    input.Body.AutoUpdate == enum_ProjectAutoUpdate[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateProjectVersion

valid {
    input.Body.ProjectArn == STRING
    input.Body.VersionName == STRING
    input.Body.OutputConfig.S3Bucket == STRING
    input.Body.OutputConfig.S3KeyPrefix == STRING
    input.Body.TrainingData.Assets[_].GroundTruthManifest.S3Object.Bucket == STRING
    input.Body.TrainingData.Assets[_].GroundTruthManifest.S3Object.Name == STRING
    input.Body.TrainingData.Assets[_].GroundTruthManifest.S3Object.Version == STRING
    input.Body.TestingData.Assets[_].GroundTruthManifest.S3Object.Bucket == STRING
    input.Body.TestingData.Assets[_].GroundTruthManifest.S3Object.Name == STRING
    input.Body.TestingData.Assets[_].GroundTruthManifest.S3Object.Version == STRING
    input.Body.TestingData.AutoCreate == BOOLEAN
    input.Body.Tags.STRING == STRING
    input.Body.KmsKeyId == STRING
    input.Body.VersionDescription == STRING
    input.Body.FeatureConfig.ContentModeration.ConfidenceThreshold == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateStreamProcessor

valid {
    input.Body.Input.KinesisVideoStream.Arn == STRING
    input.Body.Output.KinesisDataStream.Arn == STRING
    input.Body.Output.S3Destination.Bucket == STRING
    input.Body.Output.S3Destination.KeyPrefix == STRING
    input.Body.Name == STRING
    input.Body.Settings.FaceSearch.CollectionId == STRING
    input.Body.Settings.FaceSearch.FaceMatchThreshold == FLOAT
    input.Body.Settings.ConnectedHome.Labels[_] == STRING
    input.Body.Settings.ConnectedHome.MinConfidence == FLOAT
    input.Body.RoleArn == STRING
    input.Body.Tags.STRING == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.KmsKeyId == STRING
    input.Body.RegionsOfInterest[_].BoundingBox.Width == FLOAT
    input.Body.RegionsOfInterest[_].BoundingBox.Height == FLOAT
    input.Body.RegionsOfInterest[_].BoundingBox.Left == FLOAT
    input.Body.RegionsOfInterest[_].BoundingBox.Top == FLOAT
    input.Body.RegionsOfInterest[_].Polygon[_].X == FLOAT
    input.Body.RegionsOfInterest[_].Polygon[_].Y == FLOAT
    input.Body.DataSharingPreference.OptIn == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateUser

valid {
    input.Body.CollectionId == STRING
    input.Body.UserId == STRING
    input.Body.ClientRequestToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteCollection

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

DeleteDataset

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

DeleteFaces

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

DeleteProject

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

DeleteProjectPolicy

valid {
    input.Body.ProjectArn == STRING
    input.Body.PolicyName == STRING
    input.Body.PolicyRevisionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteProjectVersion

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

DeleteStreamProcessor

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

DeleteUser

valid {
    input.Body.CollectionId == STRING
    input.Body.UserId == STRING
    input.Body.ClientRequestToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeCollection

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

DescribeDataset

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

DescribeProjectVersions

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

DescribeProjects

enum_CustomizationFeature := [ "CONTENT_MODERATION", "CUSTOM_LABELS" ]

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

DescribeStreamProcessor

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

DetectCustomLabels

valid {
    input.Body.ProjectVersionArn == STRING
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.MaxResults == INTEGER
    input.Body.MinConfidence == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetectFaces

enum_Attribute := [ "DEFAULT", "ALL", "AGE_RANGE", "BEARD", "EMOTIONS", "EYE_DIRECTION", "EYEGLASSES", "EYES_OPEN", "GENDER", "MOUTH_OPEN", "MUSTACHE", "FACE_OCCLUDED", "SMILE", "SUNGLASSES" ]

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.Attributes[_] == enum_Attribute[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetectLabels

enum_DetectLabelsFeatureName := [ "GENERAL_LABELS", "IMAGE_PROPERTIES" ]

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.MaxLabels == INTEGER
    input.Body.MinConfidence == FLOAT
    input.Body.Features[_] == enum_DetectLabelsFeatureName[_]
    input.Body.Settings.GeneralLabels.LabelInclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelExclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelCategoryInclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelCategoryExclusionFilters[_] == STRING
    input.Body.Settings.ImageProperties.MaxDominantColors == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetectModerationLabels

enum_ContentClassifier := [ "FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent" ]

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.MinConfidence == FLOAT
    input.Body.HumanLoopConfig.HumanLoopName == STRING
    input.Body.HumanLoopConfig.FlowDefinitionArn == STRING
    input.Body.HumanLoopConfig.DataAttributes.ContentClassifiers[_] == enum_ContentClassifier[_]
    input.Body.ProjectVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetectProtectiveEquipment

enum_ProtectiveEquipmentType := [ "FACE_COVER", "HAND_COVER", "HEAD_COVER" ]

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.SummarizationAttributes.MinConfidence == FLOAT
    input.Body.SummarizationAttributes.RequiredEquipmentTypes[_] == enum_ProtectiveEquipmentType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetectText

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.Filters.WordFilter.MinConfidence == FLOAT
    input.Body.Filters.WordFilter.MinBoundingBoxHeight == FLOAT
    input.Body.Filters.WordFilter.MinBoundingBoxWidth == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Width == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Height == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Left == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Top == FLOAT
    input.Body.Filters.RegionsOfInterest[_].Polygon[_].X == FLOAT
    input.Body.Filters.RegionsOfInterest[_].Polygon[_].Y == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateFaces

valid {
    input.Body.CollectionId == STRING
    input.Body.UserId == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.FaceIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DistributeDatasetEntries

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

GetCelebrityInfo

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

GetCelebrityRecognition

enum_CelebrityRecognitionSortBy := [ "ID", "TIMESTAMP" ]

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

GetContentModeration

enum_ContentModerationAggregateBy := [ "TIMESTAMPS", "SEGMENTS" ]
enum_ContentModerationSortBy := [ "NAME", "TIMESTAMP" ]

valid {
    input.Body.JobId == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.SortBy == enum_ContentModerationSortBy[_]
    input.Body.AggregateBy == enum_ContentModerationAggregateBy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetFaceDetection

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

GetFaceLivenessSessionResults

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

GetFaceSearch

enum_FaceSearchSortBy := [ "INDEX", "TIMESTAMP" ]

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

GetLabelDetection

enum_LabelDetectionAggregateBy := [ "TIMESTAMPS", "SEGMENTS" ]
enum_LabelDetectionSortBy := [ "NAME", "TIMESTAMP" ]

valid {
    input.Body.JobId == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.SortBy == enum_LabelDetectionSortBy[_]
    input.Body.AggregateBy == enum_LabelDetectionAggregateBy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMediaAnalysisJob

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

GetPersonTracking

enum_PersonTrackingSortBy := [ "INDEX", "TIMESTAMP" ]

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

GetSegmentDetection

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

GetTextDetection

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

IndexFaces

enum_Attribute := [ "DEFAULT", "ALL", "AGE_RANGE", "BEARD", "EMOTIONS", "EYE_DIRECTION", "EYEGLASSES", "EYES_OPEN", "GENDER", "MOUTH_OPEN", "MUSTACHE", "FACE_OCCLUDED", "SMILE", "SUNGLASSES" ]
enum_QualityFilter := [ "NONE", "AUTO", "LOW", "MEDIUM", "HIGH" ]

valid {
    input.Body.CollectionId == STRING
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.ExternalImageId == STRING
    input.Body.DetectionAttributes[_] == enum_Attribute[_]
    input.Body.MaxFaces == INTEGER
    input.Body.QualityFilter == enum_QualityFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCollections

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

ListDatasetEntries

valid {
    input.Body.DatasetArn == STRING
    input.Body.ContainsLabels[_] == STRING
    input.Body.Labeled == BOOLEAN
    input.Body.SourceRefContains == STRING
    input.Body.HasErrors == BOOLEAN
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDatasetLabels

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

ListFaces

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

ListMediaAnalysisJobs

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

ListProjectPolicies

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

ListStreamProcessors

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

ListTagsForResource

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

ListUsers

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

PutProjectPolicy

valid {
    input.Body.ProjectArn == STRING
    input.Body.PolicyName == STRING
    input.Body.PolicyRevisionId == STRING
    input.Body.PolicyDocument == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RecognizeCelebrities

valid {
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchFaces

valid {
    input.Body.CollectionId == STRING
    input.Body.FaceId == STRING
    input.Body.MaxFaces == INTEGER
    input.Body.FaceMatchThreshold == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchFacesByImage

enum_QualityFilter := [ "NONE", "AUTO", "LOW", "MEDIUM", "HIGH" ]

valid {
    input.Body.CollectionId == STRING
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.MaxFaces == INTEGER
    input.Body.FaceMatchThreshold == FLOAT
    input.Body.QualityFilter == enum_QualityFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchUsers

valid {
    input.Body.CollectionId == STRING
    input.Body.UserId == STRING
    input.Body.FaceId == STRING
    input.Body.UserMatchThreshold == FLOAT
    input.Body.MaxUsers == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchUsersByImage

enum_QualityFilter := [ "NONE", "AUTO", "LOW", "MEDIUM", "HIGH" ]

valid {
    input.Body.CollectionId == STRING
    input.Body.Image.Bytes == BLOB
    input.Body.Image.S3Object.Bucket == STRING
    input.Body.Image.S3Object.Name == STRING
    input.Body.Image.S3Object.Version == STRING
    input.Body.UserMatchThreshold == FLOAT
    input.Body.MaxUsers == INTEGER
    input.Body.QualityFilter == enum_QualityFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartCelebrityRecognition

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartContentModeration

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.MinConfidence == FLOAT
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartFaceDetection

enum_FaceAttributes := [ "DEFAULT", "ALL" ]

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.FaceAttributes == enum_FaceAttributes[_]
    input.Body.JobTag == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartFaceSearch

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.FaceMatchThreshold == FLOAT
    input.Body.CollectionId == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartLabelDetection

enum_LabelDetectionFeatureName := [ "GENERAL_LABELS" ]

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.MinConfidence == FLOAT
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.Body.Features[_] == enum_LabelDetectionFeatureName[_]
    input.Body.Settings.GeneralLabels.LabelInclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelExclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelCategoryInclusionFilters[_] == STRING
    input.Body.Settings.GeneralLabels.LabelCategoryExclusionFilters[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartMediaAnalysisJob

valid {
    input.Body.ClientRequestToken == STRING
    input.Body.JobName == STRING
    input.Body.OperationsConfig.DetectModerationLabels.MinConfidence == FLOAT
    input.Body.OperationsConfig.DetectModerationLabels.ProjectVersion == STRING
    input.Body.Input.S3Object.Bucket == STRING
    input.Body.Input.S3Object.Name == STRING
    input.Body.Input.S3Object.Version == STRING
    input.Body.OutputConfig.S3Bucket == STRING
    input.Body.OutputConfig.S3KeyPrefix == STRING
    input.Body.KmsKeyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartPersonTracking

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartProjectVersion

valid {
    input.Body.ProjectVersionArn == STRING
    input.Body.MinInferenceUnits == INTEGER
    input.Body.MaxInferenceUnits == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartSegmentDetection

enum_SegmentType := [ "TECHNICAL_CUE", "SHOT" ]

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.Body.Filters.TechnicalCueFilter.MinSegmentConfidence == FLOAT
    input.Body.Filters.TechnicalCueFilter.BlackFrame.MaxPixelThreshold == FLOAT
    input.Body.Filters.TechnicalCueFilter.BlackFrame.MinCoveragePercentage == FLOAT
    input.Body.Filters.ShotFilter.MinSegmentConfidence == FLOAT
    input.Body.SegmentTypes[_] == enum_SegmentType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartStreamProcessor

valid {
    input.Body.Name == STRING
    input.Body.StartSelector.KVSStreamStartSelector.ProducerTimestamp == LONG
    input.Body.StartSelector.KVSStreamStartSelector.FragmentNumber == STRING
    input.Body.StopSelector.MaxDurationInSeconds == LONG
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartTextDetection

valid {
    input.Body.Video.S3Object.Bucket == STRING
    input.Body.Video.S3Object.Name == STRING
    input.Body.Video.S3Object.Version == STRING
    input.Body.ClientRequestToken == STRING
    input.Body.NotificationChannel.SNSTopicArn == STRING
    input.Body.NotificationChannel.RoleArn == STRING
    input.Body.JobTag == STRING
    input.Body.Filters.WordFilter.MinConfidence == FLOAT
    input.Body.Filters.WordFilter.MinBoundingBoxHeight == FLOAT
    input.Body.Filters.WordFilter.MinBoundingBoxWidth == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Width == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Height == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Left == FLOAT
    input.Body.Filters.RegionsOfInterest[_].BoundingBox.Top == FLOAT
    input.Body.Filters.RegionsOfInterest[_].Polygon[_].X == FLOAT
    input.Body.Filters.RegionsOfInterest[_].Polygon[_].Y == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopProjectVersion

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

StopStreamProcessor

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

TagResource

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

UpdateDatasetEntries

valid {
    input.Body.DatasetArn == STRING
    input.Body.Changes.GroundTruth == BLOB
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateStreamProcessor

enum_StreamProcessorParameterToDelete := [ "ConnectedHomeMinConfidence", "RegionsOfInterest" ]

valid {
    input.Body.Name == STRING
    input.Body.SettingsForUpdate.ConnectedHomeForUpdate.Labels[_] == STRING
    input.Body.SettingsForUpdate.ConnectedHomeForUpdate.MinConfidence == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].BoundingBox.Width == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].BoundingBox.Height == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].BoundingBox.Left == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].BoundingBox.Top == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].Polygon[_].X == FLOAT
    input.Body.RegionsOfInterestForUpdate[_].Polygon[_].Y == FLOAT
    input.Body.DataSharingPreferenceForUpdate.OptIn == BOOLEAN
    input.Body.ParametersToDelete[_] == enum_StreamProcessorParameterToDelete[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}