{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Rekognition.StartLabelDetection -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Starts asynchronous detection of labels in a stored video. -- -- -- Rekognition Video can detect labels in a video. Labels are instances of real-world entities. This includes objects like flower, tree, and table; events like wedding, graduation, and birthday party; concepts like landscape, evening, and nature; and activities like a person getting out of a car or a person skiing. -- -- The video must be stored in an Amazon S3 bucket. Use 'Video' to specify the bucket name and the filename of the video. @StartLabelDetection@ returns a job identifier (@JobId@ ) which you use to get the results of the operation. When label detection is finished, Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic that you specify in @NotificationChannel@ . -- -- To get the results of the label detection operation, first check that the status value published to the Amazon SNS topic is @SUCCEEDED@ . If so, call and pass the job identifier (@JobId@ ) from the initial call to @StartLabelDetection@ . -- -- -- module Network.AWS.Rekognition.StartLabelDetection ( -- * Creating a Request startLabelDetection , StartLabelDetection -- * Request Lenses , sldJobTag , sldNotificationChannel , sldClientRequestToken , sldMinConfidence , sldVideo -- * Destructuring the Response , startLabelDetectionResponse , StartLabelDetectionResponse -- * Response Lenses , sldrsJobId , sldrsResponseStatus ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Rekognition.Types import Network.AWS.Rekognition.Types.Product import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'startLabelDetection' smart constructor. data StartLabelDetection = StartLabelDetection' { _sldJobTag :: !(Maybe Text) , _sldNotificationChannel :: !(Maybe NotificationChannel) , _sldClientRequestToken :: !(Maybe Text) , _sldMinConfidence :: !(Maybe Double) , _sldVideo :: !Video } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartLabelDetection' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sldJobTag' - Unique identifier you specify to identify the job in the completion status published to the Amazon Simple Notification Service topic. -- -- * 'sldNotificationChannel' - The Amazon SNS topic ARN you want Rekognition Video to publish the completion status of the label detection operation to. -- -- * 'sldClientRequestToken' - Idempotent token used to identify the start request. If you use the same token with multiple @StartLabelDetection@ requests, the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same job from being accidently started more than once. -- -- * 'sldMinConfidence' - Specifies the minimum confidence that Rekognition Video must have in order to return a detected label. Confidence represents how certain Amazon Rekognition is that a label is correctly identified.0 is the lowest confidence. 100 is the highest confidence. Rekognition Video doesn't return any labels with a confidence level lower than this specified value. If you don't specify @MinConfidence@ , the operation returns labels with confidence values greater than or equal to 50 percent. -- -- * 'sldVideo' - The video in which you want to detect labels. The video must be stored in an Amazon S3 bucket. startLabelDetection :: Video -- ^ 'sldVideo' -> StartLabelDetection startLabelDetection pVideo_ = StartLabelDetection' { _sldJobTag = Nothing , _sldNotificationChannel = Nothing , _sldClientRequestToken = Nothing , _sldMinConfidence = Nothing , _sldVideo = pVideo_ } -- | Unique identifier you specify to identify the job in the completion status published to the Amazon Simple Notification Service topic. sldJobTag :: Lens' StartLabelDetection (Maybe Text) sldJobTag = lens _sldJobTag (\ s a -> s{_sldJobTag = a}) -- | The Amazon SNS topic ARN you want Rekognition Video to publish the completion status of the label detection operation to. sldNotificationChannel :: Lens' StartLabelDetection (Maybe NotificationChannel) sldNotificationChannel = lens _sldNotificationChannel (\ s a -> s{_sldNotificationChannel = a}) -- | Idempotent token used to identify the start request. If you use the same token with multiple @StartLabelDetection@ requests, the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same job from being accidently started more than once. sldClientRequestToken :: Lens' StartLabelDetection (Maybe Text) sldClientRequestToken = lens _sldClientRequestToken (\ s a -> s{_sldClientRequestToken = a}) -- | Specifies the minimum confidence that Rekognition Video must have in order to return a detected label. Confidence represents how certain Amazon Rekognition is that a label is correctly identified.0 is the lowest confidence. 100 is the highest confidence. Rekognition Video doesn't return any labels with a confidence level lower than this specified value. If you don't specify @MinConfidence@ , the operation returns labels with confidence values greater than or equal to 50 percent. sldMinConfidence :: Lens' StartLabelDetection (Maybe Double) sldMinConfidence = lens _sldMinConfidence (\ s a -> s{_sldMinConfidence = a}) -- | The video in which you want to detect labels. The video must be stored in an Amazon S3 bucket. sldVideo :: Lens' StartLabelDetection Video sldVideo = lens _sldVideo (\ s a -> s{_sldVideo = a}) instance AWSRequest StartLabelDetection where type Rs StartLabelDetection = StartLabelDetectionResponse request = postJSON rekognition response = receiveJSON (\ s h x -> StartLabelDetectionResponse' <$> (x .?> "JobId") <*> (pure (fromEnum s))) instance Hashable StartLabelDetection where instance NFData StartLabelDetection where instance ToHeaders StartLabelDetection where toHeaders = const (mconcat ["X-Amz-Target" =# ("RekognitionService.StartLabelDetection" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON StartLabelDetection where toJSON StartLabelDetection'{..} = object (catMaybes [("JobTag" .=) <$> _sldJobTag, ("NotificationChannel" .=) <$> _sldNotificationChannel, ("ClientRequestToken" .=) <$> _sldClientRequestToken, ("MinConfidence" .=) <$> _sldMinConfidence, Just ("Video" .= _sldVideo)]) instance ToPath StartLabelDetection where toPath = const "/" instance ToQuery StartLabelDetection where toQuery = const mempty -- | /See:/ 'startLabelDetectionResponse' smart constructor. data StartLabelDetectionResponse = StartLabelDetectionResponse' { _sldrsJobId :: !(Maybe Text) , _sldrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartLabelDetectionResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sldrsJobId' - The identifier for the label detection job. Use @JobId@ to identify the job in a subsequent call to @GetLabelDetection@ . -- -- * 'sldrsResponseStatus' - -- | The response status code. startLabelDetectionResponse :: Int -- ^ 'sldrsResponseStatus' -> StartLabelDetectionResponse startLabelDetectionResponse pResponseStatus_ = StartLabelDetectionResponse' {_sldrsJobId = Nothing, _sldrsResponseStatus = pResponseStatus_} -- | The identifier for the label detection job. Use @JobId@ to identify the job in a subsequent call to @GetLabelDetection@ . sldrsJobId :: Lens' StartLabelDetectionResponse (Maybe Text) sldrsJobId = lens _sldrsJobId (\ s a -> s{_sldrsJobId = a}) -- | -- | The response status code. sldrsResponseStatus :: Lens' StartLabelDetectionResponse Int sldrsResponseStatus = lens _sldrsResponseStatus (\ s a -> s{_sldrsResponseStatus = a}) instance NFData StartLabelDetectionResponse where