/*
 * 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 workspaces-2015-04-08.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.WorkSpaces.Model
{
    /// 
    /// Describes the information used to create a WorkSpace.
    /// 
    public partial class WorkspaceRequest
    {
        private string _bundleId;
        private string _directoryId;
        private bool? _rootVolumeEncryptionEnabled;
        private List _tags = new List();
        private string _userName;
        private bool? _userVolumeEncryptionEnabled;
        private string _volumeEncryptionKey;
        private WorkspaceProperties _workspaceProperties;
        /// 
        /// Gets and sets the property BundleId. 
        /// 
        /// The identifier of the bundle for the WorkSpace. You can use DescribeWorkspaceBundles
        /// to list the available bundles.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string BundleId
        {
            get { return this._bundleId; }
            set { this._bundleId = value; }
        }
        // Check to see if BundleId property is set
        internal bool IsSetBundleId()
        {
            return this._bundleId != null;
        }
        /// 
        /// Gets and sets the property DirectoryId. 
        /// 
        /// The identifier of the Directory Service directory for the WorkSpace. You can use DescribeWorkspaceDirectories
        /// to list the available directories.
        /// 
        /// 
        [AWSProperty(Required=true, Min=10, Max=65)]
        public string DirectoryId
        {
            get { return this._directoryId; }
            set { this._directoryId = value; }
        }
        // Check to see if DirectoryId property is set
        internal bool IsSetDirectoryId()
        {
            return this._directoryId != null;
        }
        /// 
        /// Gets and sets the property RootVolumeEncryptionEnabled. 
        /// 
        /// Indicates whether the data stored on the root volume is encrypted.
        /// 
        /// 
        public bool RootVolumeEncryptionEnabled
        {
            get { return this._rootVolumeEncryptionEnabled.GetValueOrDefault(); }
            set { this._rootVolumeEncryptionEnabled = value; }
        }
        // Check to see if RootVolumeEncryptionEnabled property is set
        internal bool IsSetRootVolumeEncryptionEnabled()
        {
            return this._rootVolumeEncryptionEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property Tags. 
        /// 
        /// The tags for the WorkSpace.
        /// 
        /// 
        public List Tags
        {
            get { return this._tags; }
            set { this._tags = value; }
        }
        // Check to see if Tags property is set
        internal bool IsSetTags()
        {
            return this._tags != null && this._tags.Count > 0; 
        }
        /// 
        /// Gets and sets the property UserName. 
        /// 
        /// The user name of the user for the WorkSpace. This user name must exist in the Directory
        /// Service directory for the WorkSpace.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=63)]
        public string UserName
        {
            get { return this._userName; }
            set { this._userName = value; }
        }
        // Check to see if UserName property is set
        internal bool IsSetUserName()
        {
            return this._userName != null;
        }
        /// 
        /// Gets and sets the property UserVolumeEncryptionEnabled. 
        /// 
        /// Indicates whether the data stored on the user volume is encrypted.
        /// 
        /// 
        public bool UserVolumeEncryptionEnabled
        {
            get { return this._userVolumeEncryptionEnabled.GetValueOrDefault(); }
            set { this._userVolumeEncryptionEnabled = value; }
        }
        // Check to see if UserVolumeEncryptionEnabled property is set
        internal bool IsSetUserVolumeEncryptionEnabled()
        {
            return this._userVolumeEncryptionEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property VolumeEncryptionKey. 
        /// 
        /// The ARN of the symmetric KMS key used to encrypt data stored on your WorkSpace. Amazon
        /// WorkSpaces does not support asymmetric KMS keys.
        /// 
        /// 
        public string VolumeEncryptionKey
        {
            get { return this._volumeEncryptionKey; }
            set { this._volumeEncryptionKey = value; }
        }
        // Check to see if VolumeEncryptionKey property is set
        internal bool IsSetVolumeEncryptionKey()
        {
            return this._volumeEncryptionKey != null;
        }
        /// 
        /// Gets and sets the property WorkspaceProperties. 
        /// 
        /// The WorkSpace properties.
        /// 
        /// 
        public WorkspaceProperties WorkspaceProperties
        {
            get { return this._workspaceProperties; }
            set { this._workspaceProperties = value; }
        }
        // Check to see if WorkspaceProperties property is set
        internal bool IsSetWorkspaceProperties()
        {
            return this._workspaceProperties != null;
        }
    }
}