/*
 * 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 models.lex.v2-2020-08-07.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.LexModelsV2.Model
{
    /// 
    /// Contains information about the test set that is imported.
    /// 
    public partial class TestSetImportResourceSpecification
    {
        private string _description;
        private TestSetImportInputLocation _importInputLocation;
        private TestSetModality _modality;
        private string _roleArn;
        private TestSetStorageLocation _storageLocation;
        private string _testSetName;
        private Dictionary _testSetTags = new Dictionary();
        /// 
        /// Gets and sets the property Description. 
        /// 
        /// The description of the test set.
        /// 
        /// 
        [AWSProperty(Min=0, Max=200)]
        public string Description
        {
            get { return this._description; }
            set { this._description = value; }
        }
        // Check to see if Description property is set
        internal bool IsSetDescription()
        {
            return this._description != null;
        }
        /// 
        /// Gets and sets the property ImportInputLocation. 
        /// 
        /// Contains information about the input location from where test-set should be imported.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public TestSetImportInputLocation ImportInputLocation
        {
            get { return this._importInputLocation; }
            set { this._importInputLocation = value; }
        }
        // Check to see if ImportInputLocation property is set
        internal bool IsSetImportInputLocation()
        {
            return this._importInputLocation != null;
        }
        /// 
        /// Gets and sets the property Modality. 
        /// 
        /// Specifies whether the test-set being imported contains written or spoken data.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public TestSetModality Modality
        {
            get { return this._modality; }
            set { this._modality = value; }
        }
        // Check to see if Modality property is set
        internal bool IsSetModality()
        {
            return this._modality != null;
        }
        /// 
        /// Gets and sets the property RoleArn. 
        /// 
        /// The Amazon Resource Name (ARN) of an IAM role that has permission to access the test
        /// set.
        /// 
        /// 
        [AWSProperty(Required=true, Min=32, Max=2048)]
        public string RoleArn
        {
            get { return this._roleArn; }
            set { this._roleArn = value; }
        }
        // Check to see if RoleArn property is set
        internal bool IsSetRoleArn()
        {
            return this._roleArn != null;
        }
        /// 
        /// Gets and sets the property StorageLocation. 
        /// 
        /// Contains information about the location that Amazon Lex uses to store the test-set.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public TestSetStorageLocation StorageLocation
        {
            get { return this._storageLocation; }
            set { this._storageLocation = value; }
        }
        // Check to see if StorageLocation property is set
        internal bool IsSetStorageLocation()
        {
            return this._storageLocation != null;
        }
        /// 
        /// Gets and sets the property TestSetName. 
        /// 
        /// The name of the test set.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=100)]
        public string TestSetName
        {
            get { return this._testSetName; }
            set { this._testSetName = value; }
        }
        // Check to see if TestSetName property is set
        internal bool IsSetTestSetName()
        {
            return this._testSetName != null;
        }
        /// 
        /// Gets and sets the property TestSetTags. 
        /// 
        /// A list of tags to add to the test set. You can only add tags when you import/generate
        /// a new test set. You can't use the UpdateTestSet operation to update tags.
        /// To update tags, use the TagResource operation.
        /// 
        /// 
        [AWSProperty(Min=0, Max=200)]
        public Dictionary TestSetTags
        {
            get { return this._testSetTags; }
            set { this._testSetTags = value; }
        }
        // Check to see if TestSetTags property is set
        internal bool IsSetTestSetTags()
        {
            return this._testSetTags != null && this._testSetTags.Count > 0; 
        }
    }
}