/*
 * 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 chime-sdk-media-pipelines-2021-07-15.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.ChimeSDKMediaPipelines.Model
{
    /// 
    /// A structure that contains the configuration settings for an Amazon Transcribe call
    /// analytics processor.
    /// 
    public partial class AmazonTranscribeCallAnalyticsProcessorConfiguration
    {
        private List _callAnalyticsStreamCategories = new List();
        private ContentType _contentIdentificationType;
        private ContentType _contentRedactionType;
        private bool? _enablePartialResultsStabilization;
        private bool? _filterPartialResults;
        private CallAnalyticsLanguageCode _languageCode;
        private string _languageModelName;
        private PartialResultsStability _partialResultsStability;
        private string _piiEntityTypes;
        private PostCallAnalyticsSettings _postCallAnalyticsSettings;
        private VocabularyFilterMethod _vocabularyFilterMethod;
        private string _vocabularyFilterName;
        private string _vocabularyName;
        /// 
        /// Gets and sets the property CallAnalyticsStreamCategories. 
        /// 
        /// By default, all CategoryEvents are sent to the insights target. If this
        /// parameter is specified, only included categories are sent to the insights target.
        /// 
        /// 
        /// 
        [AWSProperty(Min=1, Max=20)]
        public List CallAnalyticsStreamCategories
        {
            get { return this._callAnalyticsStreamCategories; }
            set { this._callAnalyticsStreamCategories = value; }
        }
        // Check to see if CallAnalyticsStreamCategories property is set
        internal bool IsSetCallAnalyticsStreamCategories()
        {
            return this._callAnalyticsStreamCategories != null && this._callAnalyticsStreamCategories.Count > 0; 
        }
        /// 
        /// Gets and sets the property ContentIdentificationType. 
        /// 
        /// Labels all personally identifiable information (PII) identified in your transcript.
        /// 
        ///  
        /// 
        /// Content identification is performed at the segment level; PII specified in PiiEntityTypes
        /// is flagged upon complete transcription of an audio segment.
        /// 
        ///  
        /// 
        /// You can’t set ContentIdentificationType and ContentRedactionType
        /// in the same request. If you do, your request returns a BadRequestException.
        /// 
        ///  
        /// 
        /// For more information, see Redacting
        /// or identifying personally identifiable information in the Amazon Transcribe
        /// Developer Guide.
        /// 
        /// 
        public ContentType ContentIdentificationType
        {
            get { return this._contentIdentificationType; }
            set { this._contentIdentificationType = value; }
        }
        // Check to see if ContentIdentificationType property is set
        internal bool IsSetContentIdentificationType()
        {
            return this._contentIdentificationType != null;
        }
        /// 
        /// Gets and sets the property ContentRedactionType. 
        /// 
        /// Redacts all personally identifiable information (PII) identified in your transcript.
        /// 
        ///  
        /// 
        /// Content redaction is performed at the segment level; PII specified in PiiEntityTypes
        /// is redacted upon complete transcription of an audio segment.
        /// 
        ///  
        /// 
        /// You can’t set ContentRedactionType and ContentIdentificationType
        /// in the same request. If you do, your request returns a BadRequestException.
        /// 
        ///  
        /// 
        /// For more information, see Redacting
        /// or identifying personally identifiable information in the Amazon Transcribe
        /// Developer Guide.
        /// 
        /// 
        public ContentType ContentRedactionType
        {
            get { return this._contentRedactionType; }
            set { this._contentRedactionType = value; }
        }
        // Check to see if ContentRedactionType property is set
        internal bool IsSetContentRedactionType()
        {
            return this._contentRedactionType != null;
        }
        /// 
        /// Gets and sets the property EnablePartialResultsStabilization. 
        /// 
        /// Enables partial result stabilization for your transcription. Partial result stabilization
        /// can reduce latency in your output, but may impact accuracy. For more information,
        /// see Partial-result
        /// stabilization in the Amazon Transcribe Developer Guide.
        /// 
        /// 
        public bool EnablePartialResultsStabilization
        {
            get { return this._enablePartialResultsStabilization.GetValueOrDefault(); }
            set { this._enablePartialResultsStabilization = value; }
        }
        // Check to see if EnablePartialResultsStabilization property is set
        internal bool IsSetEnablePartialResultsStabilization()
        {
            return this._enablePartialResultsStabilization.HasValue; 
        }
        /// 
        /// Gets and sets the property FilterPartialResults. 
        /// 
        /// If true, UtteranceEvents with IsPartial: true are filtered
        /// out of the insights target.
        /// 
        /// 
        public bool FilterPartialResults
        {
            get { return this._filterPartialResults.GetValueOrDefault(); }
            set { this._filterPartialResults = value; }
        }
        // Check to see if FilterPartialResults property is set
        internal bool IsSetFilterPartialResults()
        {
            return this._filterPartialResults.HasValue; 
        }
        /// 
        /// Gets and sets the property LanguageCode. 
        /// 
        /// The language code in the configuration.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public CallAnalyticsLanguageCode 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 LanguageModelName. 
        /// 
        /// Specifies the name of the custom language model to use when processing a transcription.
        /// Note that language model names are case sensitive.
        /// 
        ///  
        /// 
        /// The language of the specified language model must match the language code specified
        /// in the transcription request. If the languages don't match, the custom language model
        /// isn't applied. Language mismatches don't generate errors or warnings.
        /// 
        ///  
        /// 
        /// For more information, see Custom
        /// language models in the Amazon Transcribe Developer Guide.
        /// 
        /// 
        [AWSProperty(Min=1, Max=200)]
        public string LanguageModelName
        {
            get { return this._languageModelName; }
            set { this._languageModelName = value; }
        }
        // Check to see if LanguageModelName property is set
        internal bool IsSetLanguageModelName()
        {
            return this._languageModelName != null;
        }
        /// 
        /// Gets and sets the property PartialResultsStability. 
        /// 
        /// Specifies the level of stability to use when you enable partial results stabilization
        /// (EnablePartialResultsStabilization).
        /// 
        ///  
        /// 
        /// Low stability provides the highest accuracy. High stability transcribes faster, but
        /// with slightly lower accuracy.
        /// 
        ///  
        /// 
        /// For more information, see Partial-result
        /// stabilization in the Amazon Transcribe Developer Guide.
        /// 
        /// 
        public PartialResultsStability PartialResultsStability
        {
            get { return this._partialResultsStability; }
            set { this._partialResultsStability = value; }
        }
        // Check to see if PartialResultsStability property is set
        internal bool IsSetPartialResultsStability()
        {
            return this._partialResultsStability != null;
        }
        /// 
        /// Gets and sets the property PiiEntityTypes. 
        /// 
        /// Specifies the types of personally identifiable information (PII) to redact from a
        /// transcript. You can include as many types as you'd like, or you can select ALL.
        /// 
        ///  
        /// 
        /// To include PiiEntityTypes in your Call Analytics request, you must also
        /// include ContentIdentificationType or ContentRedactionType,
        /// but you can't include both. 
        /// 
        ///  
        /// 
        /// Values must be comma-separated and can include: ADDRESS, BANK_ACCOUNT_NUMBER,
        /// BANK_ROUTING, CREDIT_DEBIT_CVV, CREDIT_DEBIT_EXPIRY,
        /// CREDIT_DEBIT_NUMBER, EMAIL, NAME, PHONE,
        /// PIN, SSN, or ALL.
        /// 
        ///  
        /// 
        /// Length Constraints: Minimum length of 1. Maximum length of 300.
        /// 
        /// 
        [AWSProperty(Min=1, Max=300)]
        public string PiiEntityTypes
        {
            get { return this._piiEntityTypes; }
            set { this._piiEntityTypes = value; }
        }
        // Check to see if PiiEntityTypes property is set
        internal bool IsSetPiiEntityTypes()
        {
            return this._piiEntityTypes != null;
        }
        /// 
        /// Gets and sets the property PostCallAnalyticsSettings. 
        /// 
        /// The settings for a post-call analysis task in an analytics configuration.
        /// 
        /// 
        public PostCallAnalyticsSettings PostCallAnalyticsSettings
        {
            get { return this._postCallAnalyticsSettings; }
            set { this._postCallAnalyticsSettings = value; }
        }
        // Check to see if PostCallAnalyticsSettings property is set
        internal bool IsSetPostCallAnalyticsSettings()
        {
            return this._postCallAnalyticsSettings != null;
        }
        /// 
        /// Gets and sets the property VocabularyFilterMethod. 
        /// 
        /// Specifies how to apply a vocabulary filter to a transcript.
        /// 
        ///  
        /// 
        /// To replace words with ***, choose mask.
        /// 
        ///  
        /// 
        /// To delete words, choose remove.
        /// 
        ///  
        /// 
        /// To flag words without changing them, choose tag. 
        /// 
        /// 
        public VocabularyFilterMethod VocabularyFilterMethod
        {
            get { return this._vocabularyFilterMethod; }
            set { this._vocabularyFilterMethod = value; }
        }
        // Check to see if VocabularyFilterMethod property is set
        internal bool IsSetVocabularyFilterMethod()
        {
            return this._vocabularyFilterMethod != null;
        }
        /// 
        /// Gets and sets the property VocabularyFilterName. 
        /// 
        /// Specifies the name of the custom vocabulary filter to use when processing a transcription.
        /// Note that vocabulary filter names are case sensitive.
        /// 
        ///  
        /// 
        /// If the language of the specified custom vocabulary filter doesn't match the language
        /// identified in your media, the vocabulary filter is not applied to your transcription.
        /// 
        ///  
        /// 
        /// For more information, see Using
        /// vocabulary filtering with unwanted words in the Amazon Transcribe Developer
        /// Guide.
        /// 
        ///  
        /// 
        /// Length Constraints: Minimum length of 1. Maximum length of 200. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=200)]
        public string VocabularyFilterName
        {
            get { return this._vocabularyFilterName; }
            set { this._vocabularyFilterName = value; }
        }
        // Check to see if VocabularyFilterName property is set
        internal bool IsSetVocabularyFilterName()
        {
            return this._vocabularyFilterName != null;
        }
        /// 
        /// Gets and sets the property VocabularyName. 
        /// 
        /// Specifies the name of the custom vocabulary to use when processing a transcription.
        /// Note that vocabulary names are case sensitive.
        /// 
        ///  
        /// 
        /// If the language of the specified custom vocabulary doesn't match the language identified
        /// in your media, the custom vocabulary is not applied to your transcription.
        /// 
        ///  
        /// 
        /// For more information, see Custom
        /// vocabularies in the Amazon Transcribe Developer Guide.
        /// 
        ///  
        /// 
        /// Length Constraints: Minimum length of 1. Maximum length of 200. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=200)]
        public string VocabularyName
        {
            get { return this._vocabularyName; }
            set { this._vocabularyName = value; }
        }
        // Check to see if VocabularyName property is set
        internal bool IsSetVocabularyName()
        {
            return this._vocabularyName != null;
        }
    }
}