/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the rekognition-2016-06-27.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Rekognition.Model
{
    /// 
    /// Container for the parameters to the StartPersonTracking operation.
    /// Starts the asynchronous tracking of a person's path in a stored video.
    /// 
    ///  
    /// 
    /// Amazon Rekognition Video can track the path of people in a video stored in an Amazon
    /// S3 bucket. Use Video to specify the bucket name and the filename of the video.
    /// StartPersonTracking returns a job identifier (JobId) which
    /// you use to get the results of the operation. When label detection is finished, Amazon
    /// Rekognition publishes a completion status to the Amazon Simple Notification Service
    /// topic that you specify in NotificationChannel. 
    /// 
    ///  
    /// 
    /// To get the results of the person detection operation, first check that the status
    /// value published to the Amazon SNS topic is SUCCEEDED. If so, call GetPersonTracking
    /// and pass the job identifier (JobId) from the initial call to StartPersonTracking.
    /// 
    /// 
    public partial class StartPersonTrackingRequest : AmazonRekognitionRequest
    {
        private string _clientRequestToken;
        private string _jobTag;
        private NotificationChannel _notificationChannel;
        private Video _video;
        /// 
        /// Gets and sets the property ClientRequestToken. 
        /// 
        /// Idempotent token used to identify the start request. If you use the same token with
        /// multiple StartPersonTracking requests, the same JobId is
        /// returned. Use ClientRequestToken to prevent the same job from being accidently
        /// started more than once. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string ClientRequestToken
        {
            get { return this._clientRequestToken; }
            set { this._clientRequestToken = value; }
        }
        // Check to see if ClientRequestToken property is set
        internal bool IsSetClientRequestToken()
        {
            return this._clientRequestToken != null;
        }
        /// 
        /// Gets and sets the property JobTag. 
        /// 
        /// An identifier you specify that's returned in the completion notification that's published
        /// to your Amazon Simple Notification Service topic. For example, you can use JobTag
        /// to group related jobs and identify them in the completion notification.
        /// 
        /// 
        [AWSProperty(Min=1, Max=1024)]
        public string JobTag
        {
            get { return this._jobTag; }
            set { this._jobTag = value; }
        }
        // Check to see if JobTag property is set
        internal bool IsSetJobTag()
        {
            return this._jobTag != null;
        }
        /// 
        /// Gets and sets the property NotificationChannel. 
        /// 
        /// The Amazon SNS topic ARN you want Amazon Rekognition Video to publish the completion
        /// status of the people detection operation to. The Amazon SNS topic must have a topic
        /// name that begins with AmazonRekognition if you are using the AmazonRekognitionServiceRole
        /// permissions policy.
        /// 
        /// 
        public NotificationChannel NotificationChannel
        {
            get { return this._notificationChannel; }
            set { this._notificationChannel = value; }
        }
        // Check to see if NotificationChannel property is set
        internal bool IsSetNotificationChannel()
        {
            return this._notificationChannel != null;
        }
        /// 
        /// Gets and sets the property Video. 
        /// 
        /// The video in which you want to detect people. The video must be stored in an Amazon
        /// S3 bucket.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public Video Video
        {
            get { return this._video; }
            set { this._video = value; }
        }
        // Check to see if Video property is set
        internal bool IsSetVideo()
        {
            return this._video != null;
        }
    }
}