/*
 * 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 transcribe-2017-10-26.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.TranscribeService.Model
{
    /// 
    /// Provides detailed information about a specific transcription job.
    /// 
    public partial class TranscriptionJobSummary
    {
        private DateTime? _completionTime;
        private ContentRedaction _contentRedaction;
        private DateTime? _creationTime;
        private string _failureReason;
        private float? _identifiedLanguageScore;
        private bool? _identifyLanguage;
        private bool? _identifyMultipleLanguages;
        private LanguageCode _languageCode;
        private List _languageCodes = new List();
        private ModelSettings _modelSettings;
        private OutputLocationType _outputLocationType;
        private DateTime? _startTime;
        private List _toxicityDetection = new List();
        private string _transcriptionJobName;
        private TranscriptionJobStatus _transcriptionJobStatus;
        /// 
        /// Gets and sets the property CompletionTime. 
        /// 
        /// The date and time the specified transcription job finished processing.
        /// 
        ///  
        /// 
        /// Timestamps are in the format YYYY-MM-DD'T'HH:MM:SS.SSSSSS-UTC. For example,
        /// 2022-05-04T12:33:13.922000-07:00 represents a transcription job that
        /// started processing at 12:33 PM UTC-7 on May 4, 2022.
        /// 
        /// 
        public DateTime CompletionTime
        {
            get { return this._completionTime.GetValueOrDefault(); }
            set { this._completionTime = value; }
        }
        // Check to see if CompletionTime property is set
        internal bool IsSetCompletionTime()
        {
            return this._completionTime.HasValue; 
        }
        /// 
        /// Gets and sets the property ContentRedaction. 
        /// 
        /// The content redaction settings of the transcription job.
        /// 
        /// 
        public ContentRedaction ContentRedaction
        {
            get { return this._contentRedaction; }
            set { this._contentRedaction = value; }
        }
        // Check to see if ContentRedaction property is set
        internal bool IsSetContentRedaction()
        {
            return this._contentRedaction != null;
        }
        /// 
        /// Gets and sets the property CreationTime. 
        /// 
        /// The date and time the specified transcription job request was made.
        /// 
        ///  
        /// 
        /// Timestamps are in the format YYYY-MM-DD'T'HH:MM:SS.SSSSSS-UTC. For example,
        /// 2022-05-04T12:32:58.761000-07:00 represents a transcription job that
        /// started processing at 12:32 PM UTC-7 on May 4, 2022.
        /// 
        /// 
        public DateTime CreationTime
        {
            get { return this._creationTime.GetValueOrDefault(); }
            set { this._creationTime = value; }
        }
        // Check to see if CreationTime property is set
        internal bool IsSetCreationTime()
        {
            return this._creationTime.HasValue; 
        }
        /// 
        /// Gets and sets the property FailureReason. 
        /// 
        /// If TranscriptionJobStatus is FAILED, FailureReason
        /// contains information about why the transcription job failed. See also: Common
        /// Errors.
        /// 
        /// 
        public string FailureReason
        {
            get { return this._failureReason; }
            set { this._failureReason = value; }
        }
        // Check to see if FailureReason property is set
        internal bool IsSetFailureReason()
        {
            return this._failureReason != null;
        }
        /// 
        /// Gets and sets the property IdentifiedLanguageScore. 
        /// 
        /// The confidence score associated with the language identified in your media file.
        /// 
        ///  
        /// 
        /// Confidence scores are values between 0 and 1; a larger value indicates a higher probability
        /// that the identified language correctly matches the language spoken in your media.
        /// 
        /// 
        public float IdentifiedLanguageScore
        {
            get { return this._identifiedLanguageScore.GetValueOrDefault(); }
            set { this._identifiedLanguageScore = value; }
        }
        // Check to see if IdentifiedLanguageScore property is set
        internal bool IsSetIdentifiedLanguageScore()
        {
            return this._identifiedLanguageScore.HasValue; 
        }
        /// 
        /// Gets and sets the property IdentifyLanguage. 
        /// 
        /// Indicates whether automatic language identification was enabled (TRUE)
        /// for the specified transcription job.
        /// 
        /// 
        public bool IdentifyLanguage
        {
            get { return this._identifyLanguage.GetValueOrDefault(); }
            set { this._identifyLanguage = value; }
        }
        // Check to see if IdentifyLanguage property is set
        internal bool IsSetIdentifyLanguage()
        {
            return this._identifyLanguage.HasValue; 
        }
        /// 
        /// Gets and sets the property IdentifyMultipleLanguages. 
        /// 
        /// Indicates whether automatic multi-language identification was enabled (TRUE)
        /// for the specified transcription job.
        /// 
        /// 
        public bool IdentifyMultipleLanguages
        {
            get { return this._identifyMultipleLanguages.GetValueOrDefault(); }
            set { this._identifyMultipleLanguages = value; }
        }
        // Check to see if IdentifyMultipleLanguages property is set
        internal bool IsSetIdentifyMultipleLanguages()
        {
            return this._identifyMultipleLanguages.HasValue; 
        }
        /// 
        /// Gets and sets the property LanguageCode. 
        /// 
        /// The language code used to create your transcription.
        /// 
        /// 
        public LanguageCode LanguageCode
        {
            get { return this._languageCode; }
            set { this._languageCode = value; }
        }
        // Check to see if LanguageCode property is set
        internal bool IsSetLanguageCode()
        {
            return this._languageCode != null;
        }
        /// 
        /// Gets and sets the property LanguageCodes. 
        /// 
        /// The language codes used to create your transcription job. This parameter is used with
        /// multi-language identification. For single-language identification, the singular version
        /// of this parameter, LanguageCode, is present.
        /// 
        /// 
        public List LanguageCodes
        {
            get { return this._languageCodes; }
            set { this._languageCodes = value; }
        }
        // Check to see if LanguageCodes property is set
        internal bool IsSetLanguageCodes()
        {
            return this._languageCodes != null && this._languageCodes.Count > 0; 
        }
        /// 
        /// Gets and sets the property ModelSettings.
        /// 
        public ModelSettings ModelSettings
        {
            get { return this._modelSettings; }
            set { this._modelSettings = value; }
        }
        // Check to see if ModelSettings property is set
        internal bool IsSetModelSettings()
        {
            return this._modelSettings != null;
        }
        /// 
        /// Gets and sets the property OutputLocationType. 
        /// 
        /// Indicates where the specified transcription output is stored.
        /// 
        ///  
        /// 
        /// If the value is CUSTOMER_BUCKET, the location is the Amazon S3 bucket
        /// you specified using the OutputBucketName parameter in your request. If
        /// you also included OutputKey in your request, your output is located in
        /// the path you specified in your request.
        /// 
        ///  
        /// 
        /// If the value is SERVICE_BUCKET, the location is a service-managed Amazon
        /// S3 bucket. To access a transcript stored in a service-managed bucket, use the URI
        /// shown in the TranscriptFileUri or RedactedTranscriptFileUri
        /// field.
        /// 
        /// 
        public OutputLocationType OutputLocationType
        {
            get { return this._outputLocationType; }
            set { this._outputLocationType = value; }
        }
        // Check to see if OutputLocationType property is set
        internal bool IsSetOutputLocationType()
        {
            return this._outputLocationType != null;
        }
        /// 
        /// Gets and sets the property StartTime. 
        /// 
        /// The date and time your transcription job began processing.
        /// 
        ///  
        /// 
        /// Timestamps are in the format YYYY-MM-DD'T'HH:MM:SS.SSSSSS-UTC. For example,
        /// 2022-05-04T12:32:58.789000-07:00 represents a transcription job that
        /// started processing at 12:32 PM UTC-7 on May 4, 2022.
        /// 
        /// 
        public DateTime StartTime
        {
            get { return this._startTime.GetValueOrDefault(); }
            set { this._startTime = value; }
        }
        // Check to see if StartTime property is set
        internal bool IsSetStartTime()
        {
            return this._startTime.HasValue; 
        }
        /// 
        /// Gets and sets the property ToxicityDetection. 
        /// 
        /// Indicates whether toxicity detection was enabled for the specified transcription job.
        /// 
        /// 
        [AWSProperty(Min=1, Max=1)]
        public List ToxicityDetection
        {
            get { return this._toxicityDetection; }
            set { this._toxicityDetection = value; }
        }
        // Check to see if ToxicityDetection property is set
        internal bool IsSetToxicityDetection()
        {
            return this._toxicityDetection != null && this._toxicityDetection.Count > 0; 
        }
        /// 
        /// Gets and sets the property TranscriptionJobName. 
        /// 
        /// The name of the transcription job. Job names are case sensitive and must be unique
        /// within an Amazon Web Services account.
        /// 
        /// 
        [AWSProperty(Min=1, Max=200)]
        public string TranscriptionJobName
        {
            get { return this._transcriptionJobName; }
            set { this._transcriptionJobName = value; }
        }
        // Check to see if TranscriptionJobName property is set
        internal bool IsSetTranscriptionJobName()
        {
            return this._transcriptionJobName != null;
        }
        /// 
        /// Gets and sets the property TranscriptionJobStatus. 
        /// 
        /// Provides the status of your transcription job.
        /// 
        ///  
        /// 
        /// If the status is COMPLETED, the job is finished and you can find the
        /// results at the location specified in TranscriptFileUri (or RedactedTranscriptFileUri,
        /// if you requested transcript redaction). If the status is FAILED, FailureReason
        /// provides details on why your transcription job failed.
        /// 
        /// 
        public TranscriptionJobStatus TranscriptionJobStatus
        {
            get { return this._transcriptionJobStatus; }
            set { this._transcriptionJobStatus = value; }
        }
        // Check to see if TranscriptionJobStatus property is set
        internal bool IsSetTranscriptionJobStatus()
        {
            return this._transcriptionJobStatus != null;
        }
    }
}