@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Amazon Rekognition
@version 2016-06-27
@auth AWS SigV4
@endpoints 75
@hint download_for_search
@toc root(75)

@endpoint POST /
@required {CollectionId: str, UserId: str, FaceIds: [str]}
@optional {UserMatchThreshold: num(f32), ClientRequestToken: str}
@returns(200) {AssociatedFaces: [AssociatedFace]?, UnsuccessfulFaceAssociations: [UnsuccessfulFaceAssociation]?, UserStatus: str?}

@endpoint POST /
@required {SourceImage: Image, TargetImage: Image}
@optional {SimilarityThreshold: num(f32), QualityFilter: str}
@returns(200) {SourceImageFace: ComparedSourceImageFace?{BoundingBox: BoundingBox?{Width: num(f32)?, Height: num(f32)?, Left: num(f32)?, Top: num(f32)?}, Confidence: num(f32)?}, FaceMatches: [CompareFacesMatch]?, UnmatchedFaces: [ComparedFace]?, SourceImageOrientationCorrection: str?, TargetImageOrientationCorrection: str?}

@endpoint POST /
@required {SourceProjectArn: str, SourceProjectVersionArn: str, DestinationProjectArn: str, VersionName: str, OutputConfig: OutputConfig}
@optional {Tags: map<str,str>, KmsKeyId: str}
@returns(200) {ProjectVersionArn: str?}

@endpoint POST /
@required {CollectionId: str}
@optional {Tags: map<str,str>}
@returns(200) {StatusCode: int?, CollectionArn: str?, FaceModelVersion: str?}

@endpoint POST /
@required {DatasetType: str, ProjectArn: str}
@optional {DatasetSource: DatasetSource, Tags: map<str,str>}
@returns(200) {DatasetArn: str?}

@endpoint POST /
@optional {KmsKeyId: str, Settings: CreateFaceLivenessSessionRequestSettings, ClientRequestToken: str}
@returns(200) {SessionId: str}

@endpoint POST /
@required {ProjectName: str}
@optional {Feature: str, AutoUpdate: str, Tags: map<str,str>}
@returns(200) {ProjectArn: str?}

@endpoint POST /
@required {ProjectArn: str, VersionName: str, OutputConfig: OutputConfig}
@optional {TrainingData: TrainingData, TestingData: TestingData, Tags: map<str,str>, KmsKeyId: str, VersionDescription: str, FeatureConfig: CustomizationFeatureConfig}
@returns(200) {ProjectVersionArn: str?}

@endpoint POST /
@required {Input: StreamProcessorInput, Output: StreamProcessorOutput, Name: str, Settings: StreamProcessorSettings, RoleArn: str}
@optional {Tags: map<str,str>, NotificationChannel: StreamProcessorNotificationChannel, KmsKeyId: str, RegionsOfInterest: [RegionOfInterest], DataSharingPreference: StreamProcessorDataSharingPreference}
@returns(200) {StreamProcessorArn: str?}

@endpoint POST /
@required {CollectionId: str, UserId: str}
@optional {ClientRequestToken: str}

@endpoint POST /
@required {CollectionId: str}
@returns(200) {StatusCode: int?}

@endpoint POST /
@required {DatasetArn: str}

@endpoint POST /
@required {CollectionId: str, FaceIds: [str]}
@returns(200) {DeletedFaces: [str]?, UnsuccessfulFaceDeletions: [UnsuccessfulFaceDeletion]?}

@endpoint POST /
@required {ProjectArn: str}
@returns(200) {Status: str?}

@endpoint POST /
@required {ProjectArn: str, PolicyName: str}
@optional {PolicyRevisionId: str}

@endpoint POST /
@required {ProjectVersionArn: str}
@returns(200) {Status: str?}

@endpoint POST /
@required {Name: str}

@endpoint POST /
@required {CollectionId: str, UserId: str}
@optional {ClientRequestToken: str}

@endpoint POST /
@required {CollectionId: str}
@returns(200) {FaceCount: int(i64)?, FaceModelVersion: str?, CollectionARN: str?, CreationTimestamp: str(timestamp)?, UserCount: int(i64)?}

@endpoint POST /
@required {DatasetArn: str}
@returns(200) {DatasetDescription: DatasetDescription?{CreationTimestamp: str(timestamp)?, LastUpdatedTimestamp: str(timestamp)?, Status: str?, StatusMessage: str?, StatusMessageCode: str?, DatasetStats: DatasetStats?{LabeledEntries: int?, TotalEntries: int?, TotalLabels: int?, ErrorEntries: int?}}}

@endpoint POST /
@required {ProjectArn: str}
@optional {VersionNames: [str], NextToken: str, MaxResults: int}
@returns(200) {ProjectVersionDescriptions: [ProjectVersionDescription]?, NextToken: str?}

@endpoint POST /
@optional {NextToken: str, MaxResults: int, ProjectNames: [str], Features: [str]}
@returns(200) {ProjectDescriptions: [ProjectDescription]?, NextToken: str?}

@endpoint POST /
@required {Name: str}
@returns(200) {Name: str?, StreamProcessorArn: str?, Status: str?, StatusMessage: str?, CreationTimestamp: str(timestamp)?, LastUpdateTimestamp: str(timestamp)?, Input: StreamProcessorInput?{KinesisVideoStream: KinesisVideoStream?{Arn: str?}}, Output: StreamProcessorOutput?{KinesisDataStream: KinesisDataStream?{Arn: str?}, S3Destination: S3Destination?{Bucket: str?, KeyPrefix: str?}}, RoleArn: str?, Settings: StreamProcessorSettings?{FaceSearch: FaceSearchSettings?{CollectionId: str?, FaceMatchThreshold: num(f32)?}, ConnectedHome: ConnectedHomeSettings?{Labels: [str], MinConfidence: num(f32)?}}, NotificationChannel: StreamProcessorNotificationChannel?{SNSTopicArn: str}, KmsKeyId: str?, RegionsOfInterest: [RegionOfInterest]?, DataSharingPreference: StreamProcessorDataSharingPreference?{OptIn: bool}}

@endpoint POST /
@required {ProjectVersionArn: str, Image: Image}
@optional {MaxResults: int, MinConfidence: num(f32)}
@returns(200) {CustomLabels: [CustomLabel]?}

@endpoint POST /
@required {Image: Image}
@optional {Attributes: [str]}
@returns(200) {FaceDetails: [FaceDetail]?, OrientationCorrection: str?}

@endpoint POST /
@required {Image: Image}
@optional {MaxLabels: int, MinConfidence: num(f32), Features: [str], Settings: DetectLabelsSettings}
@returns(200) {Labels: [Label]?, OrientationCorrection: str?, LabelModelVersion: str?, ImageProperties: DetectLabelsImageProperties?{Quality: DetectLabelsImageQuality?{Brightness: num(f32)?, Sharpness: num(f32)?, Contrast: num(f32)?}, DominantColors: [DominantColor]?, Foreground: DetectLabelsImageForeground?{Quality: DetectLabelsImageQuality?{Brightness: num(f32)?, Sharpness: num(f32)?, Contrast: num(f32)?}, DominantColors: [DominantColor]?}, Background: DetectLabelsImageBackground?{Quality: DetectLabelsImageQuality?{Brightness: num(f32)?, Sharpness: num(f32)?, Contrast: num(f32)?}, DominantColors: [DominantColor]?}}}

@endpoint POST /
@required {Image: Image}
@optional {MinConfidence: num(f32), HumanLoopConfig: HumanLoopConfig, ProjectVersion: str}
@returns(200) {ModerationLabels: [ModerationLabel]?, ModerationModelVersion: str?, HumanLoopActivationOutput: HumanLoopActivationOutput?{HumanLoopArn: str?, HumanLoopActivationReasons: [str]?, HumanLoopActivationConditionsEvaluationResults: str?}, ProjectVersion: str?, ContentTypes: [ContentType]?}

@endpoint POST /
@required {Image: Image}
@optional {SummarizationAttributes: ProtectiveEquipmentSummarizationAttributes}
@returns(200) {ProtectiveEquipmentModelVersion: str?, Persons: [ProtectiveEquipmentPerson]?, Summary: ProtectiveEquipmentSummary?{PersonsWithRequiredEquipment: [int]?, PersonsWithoutRequiredEquipment: [int]?, PersonsIndeterminate: [int]?}}

@endpoint POST /
@required {Image: Image}
@optional {Filters: DetectTextFilters}
@returns(200) {TextDetections: [TextDetection]?, TextModelVersion: str?}

@endpoint POST /
@required {CollectionId: str, UserId: str, FaceIds: [str]}
@optional {ClientRequestToken: str}
@returns(200) {DisassociatedFaces: [DisassociatedFace]?, UnsuccessfulFaceDisassociations: [UnsuccessfulFaceDisassociation]?, UserStatus: str?}

@endpoint POST /
@required {Datasets: [DistributeDataset]}

@endpoint POST /
@required {Id: str}
@returns(200) {Urls: [str]?, Name: str?, KnownGender: KnownGender?{Type: str?}}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str, SortBy: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, NextToken: str?, Celebrities: [CelebrityRecognition]?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str, SortBy: str, AggregateBy: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, ModerationLabels: [ContentModerationDetection]?, NextToken: str?, ModerationModelVersion: str?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?, GetRequestMetadata: GetContentModerationRequestMetadata?{SortBy: str?, AggregateBy: str?}}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, NextToken: str?, Faces: [FaceDetection]?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {SessionId: str}
@returns(200) {SessionId: str, Status: str, Confidence: num(f32)?, ReferenceImage: AuditImage?{Bytes: bytes?, S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}, BoundingBox: BoundingBox?{Width: num(f32)?, Height: num(f32)?, Left: num(f32)?, Top: num(f32)?}}, AuditImages: [AuditImage]?}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str, SortBy: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, NextToken: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, Persons: [PersonMatch]?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str, SortBy: str, AggregateBy: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, NextToken: str?, Labels: [LabelDetection]?, LabelModelVersion: str?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?, GetRequestMetadata: GetLabelDetectionRequestMetadata?{SortBy: str?, AggregateBy: str?}}

@endpoint POST /
@required {JobId: str}
@returns(200) {JobId: str, JobName: str?, OperationsConfig: MediaAnalysisOperationsConfig{DetectModerationLabels: MediaAnalysisDetectModerationLabelsConfig?{MinConfidence: num(f32)?, ProjectVersion: str?}}, Status: str, FailureDetails: MediaAnalysisJobFailureDetails?{Code: str?, Message: str?}, CreationTimestamp: str(timestamp), CompletionTimestamp: str(timestamp)?, Input: MediaAnalysisInput{S3Object: S3Object{Bucket: str?, Name: str?, Version: str?}}, OutputConfig: MediaAnalysisOutputConfig{S3Bucket: str, S3KeyPrefix: str?}, KmsKeyId: str?, Results: MediaAnalysisResults?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}, ModelVersions: MediaAnalysisModelVersions?{Moderation: str?}}, ManifestSummary: MediaAnalysisManifestSummary?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str, SortBy: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, NextToken: str?, Persons: [PersonDetection]?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: [VideoMetadata]?, AudioMetadata: [AudioMetadata]?, NextToken: str?, Segments: [SegmentDetection]?, SelectedSegmentTypes: [SegmentTypeInfo]?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {JobId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {JobStatus: str?, StatusMessage: str?, VideoMetadata: VideoMetadata?{Codec: str?, DurationMillis: int(i64)?, Format: str?, FrameRate: num(f32)?, FrameHeight: int(i64)?, FrameWidth: int(i64)?, ColorRange: str?}, TextDetections: [TextDetectionResult]?, NextToken: str?, TextModelVersion: str?, JobId: str?, Video: Video?{S3Object: S3Object?{Bucket: str?, Name: str?, Version: str?}}, JobTag: str?}

@endpoint POST /
@required {CollectionId: str, Image: Image}
@optional {ExternalImageId: str, DetectionAttributes: [str], MaxFaces: int, QualityFilter: str}
@returns(200) {FaceRecords: [FaceRecord]?, OrientationCorrection: str?, FaceModelVersion: str?, UnindexedFaces: [UnindexedFace]?}

@endpoint POST /
@optional {NextToken: str, MaxResults: int}
@returns(200) {CollectionIds: [str]?, NextToken: str?, FaceModelVersions: [str]?}

@endpoint POST /
@required {DatasetArn: str}
@optional {ContainsLabels: [str], Labeled: bool, SourceRefContains: str, HasErrors: bool, NextToken: str, MaxResults: int}
@returns(200) {DatasetEntries: [str]?, NextToken: str?}

@endpoint POST /
@required {DatasetArn: str}
@optional {NextToken: str, MaxResults: int}
@returns(200) {DatasetLabelDescriptions: [DatasetLabelDescription]?, NextToken: str?}

@endpoint POST /
@required {CollectionId: str}
@optional {NextToken: str, MaxResults: int, UserId: str, FaceIds: [str]}
@returns(200) {Faces: [Face]?, NextToken: str?, FaceModelVersion: str?}

@endpoint POST /
@optional {NextToken: str, MaxResults: int}
@returns(200) {NextToken: str?, MediaAnalysisJobs: [MediaAnalysisJobDescription]}

@endpoint POST /
@required {ProjectArn: str}
@optional {NextToken: str, MaxResults: int}
@returns(200) {ProjectPolicies: [ProjectPolicy]?, NextToken: str?}

@endpoint POST /
@optional {NextToken: str, MaxResults: int}
@returns(200) {NextToken: str?, StreamProcessors: [StreamProcessor]?}

@endpoint POST /
@required {ResourceArn: str}
@returns(200) {Tags: map<str,str>?}

@endpoint POST /
@required {CollectionId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Users: [User]?, NextToken: str?}

@endpoint POST /
@required {ProjectArn: str, PolicyName: str, PolicyDocument: str}
@optional {PolicyRevisionId: str}
@returns(200) {PolicyRevisionId: str?}

@endpoint POST /
@required {Image: Image}
@returns(200) {CelebrityFaces: [Celebrity]?, UnrecognizedFaces: [ComparedFace]?, OrientationCorrection: str?}

@endpoint POST /
@required {CollectionId: str, FaceId: str}
@optional {MaxFaces: int, FaceMatchThreshold: num(f32)}
@returns(200) {SearchedFaceId: str?, FaceMatches: [FaceMatch]?, FaceModelVersion: str?}

@endpoint POST /
@required {CollectionId: str, Image: Image}
@optional {MaxFaces: int, FaceMatchThreshold: num(f32), QualityFilter: str}
@returns(200) {SearchedFaceBoundingBox: BoundingBox?{Width: num(f32)?, Height: num(f32)?, Left: num(f32)?, Top: num(f32)?}, SearchedFaceConfidence: num(f32)?, FaceMatches: [FaceMatch]?, FaceModelVersion: str?}

@endpoint POST /
@required {CollectionId: str}
@optional {UserId: str, FaceId: str, UserMatchThreshold: num(f32), MaxUsers: int}
@returns(200) {UserMatches: [UserMatch]?, FaceModelVersion: str?, SearchedFace: SearchedFace?{FaceId: str?}, SearchedUser: SearchedUser?{UserId: str?}}

@endpoint POST /
@required {CollectionId: str, Image: Image}
@optional {UserMatchThreshold: num(f32), MaxUsers: int, QualityFilter: str}
@returns(200) {UserMatches: [UserMatch]?, FaceModelVersion: str?, SearchedFace: SearchedFaceDetails?{FaceDetail: FaceDetail?{BoundingBox: BoundingBox?{Width: num(f32)?, Height: num(f32)?, Left: num(f32)?, Top: num(f32)?}, AgeRange: AgeRange?{Low: int?, High: int?}, Smile: Smile?{Value: bool?, Confidence: num(f32)?}, Eyeglasses: Eyeglasses?{Value: bool?, Confidence: num(f32)?}, Sunglasses: Sunglasses?{Value: bool?, Confidence: num(f32)?}, Gender: Gender?{Value: str?, Confidence: num(f32)?}, Beard: Beard?{Value: bool?, Confidence: num(f32)?}, Mustache: Mustache?{Value: bool?, Confidence: num(f32)?}, EyesOpen: EyeOpen?{Value: bool?, Confidence: num(f32)?}, MouthOpen: MouthOpen?{Value: bool?, Confidence: num(f32)?}, Emotions: [Emotion]?, Landmarks: [Landmark]?, Pose: Pose?{Roll: num(f32)?, Yaw: num(f32)?, Pitch: num(f32)?}, Quality: ImageQuality?{Brightness: num(f32)?, Sharpness: num(f32)?}, Confidence: num(f32)?, FaceOccluded: FaceOccluded?{Value: bool?, Confidence: num(f32)?}, EyeDirection: EyeDirection?{Yaw: num(f32)?, Pitch: num(f32)?, Confidence: num(f32)?}}}, UnsearchedFaces: [UnsearchedFace]?}

@endpoint POST /
@required {Video: Video}
@optional {ClientRequestToken: str, NotificationChannel: NotificationChannel, JobTag: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Video: Video}
@optional {MinConfidence: num(f32), ClientRequestToken: str, NotificationChannel: NotificationChannel, JobTag: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Video: Video}
@optional {ClientRequestToken: str, NotificationChannel: NotificationChannel, FaceAttributes: str, JobTag: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Video: Video, CollectionId: str}
@optional {ClientRequestToken: str, FaceMatchThreshold: num(f32), NotificationChannel: NotificationChannel, JobTag: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Video: Video}
@optional {ClientRequestToken: str, MinConfidence: num(f32), NotificationChannel: NotificationChannel, JobTag: str, Features: [str], Settings: LabelDetectionSettings}
@returns(200) {JobId: str?}

@endpoint POST /
@required {OperationsConfig: MediaAnalysisOperationsConfig, Input: MediaAnalysisInput, OutputConfig: MediaAnalysisOutputConfig}
@optional {ClientRequestToken: str, JobName: str, KmsKeyId: str}
@returns(200) {JobId: str}

@endpoint POST /
@required {Video: Video}
@optional {ClientRequestToken: str, NotificationChannel: NotificationChannel, JobTag: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {ProjectVersionArn: str, MinInferenceUnits: int}
@optional {MaxInferenceUnits: int}
@returns(200) {Status: str?}

@endpoint POST /
@required {Video: Video, SegmentTypes: [str]}
@optional {ClientRequestToken: str, NotificationChannel: NotificationChannel, JobTag: str, Filters: StartSegmentDetectionFilters}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Name: str}
@optional {StartSelector: StreamProcessingStartSelector, StopSelector: StreamProcessingStopSelector}
@returns(200) {SessionId: str?}

@endpoint POST /
@required {Video: Video}
@optional {ClientRequestToken: str, NotificationChannel: NotificationChannel, JobTag: str, Filters: StartTextDetectionFilters}
@returns(200) {JobId: str?}

@endpoint POST /
@required {ProjectVersionArn: str}
@returns(200) {Status: str?}

@endpoint POST /
@required {Name: str}

@endpoint POST /
@required {ResourceArn: str, Tags: map<str,str>}

@endpoint POST /
@required {ResourceArn: str, TagKeys: [str]}

@endpoint POST /
@required {DatasetArn: str, Changes: DatasetChanges}

@endpoint POST /
@required {Name: str}
@optional {SettingsForUpdate: StreamProcessorSettingsForUpdate, RegionsOfInterestForUpdate: [RegionOfInterest], DataSharingPreferenceForUpdate: StreamProcessorDataSharingPreference, ParametersToDelete: [str]}

@end
