/*
 * 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 iotsitewise-2019-12-02.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.IoTSiteWise.Model
{
    /// 
    /// This is the response object from the DescribeStorageConfiguration operation.
    /// 
    public partial class DescribeStorageConfigurationResponse : AmazonWebServiceResponse
    {
        private ConfigurationStatus _configurationStatus;
        private DisassociatedDataStorageState _disassociatedDataStorage;
        private DateTime? _lastUpdateDate;
        private MultiLayerStorage _multiLayerStorage;
        private RetentionPeriod _retentionPeriod;
        private StorageType _storageType;
        /// 
        /// Gets and sets the property ConfigurationStatus.
        /// 
        [AWSProperty(Required=true)]
        public ConfigurationStatus ConfigurationStatus
        {
            get { return this._configurationStatus; }
            set { this._configurationStatus = value; }
        }
        // Check to see if ConfigurationStatus property is set
        internal bool IsSetConfigurationStatus()
        {
            return this._configurationStatus != null;
        }
        /// 
        /// Gets and sets the property DisassociatedDataStorage. 
        /// 
        /// Contains the storage configuration for time series (data streams) that aren't associated
        /// with asset properties. The disassociatedDataStorage can be one of the
        /// following values:
        /// 
        ///   -  
        /// 
        ///  
ENABLED – IoT SiteWise accepts time series that aren't associated with
        /// asset properties.
        /// 
        ///   
        /// 
        /// After the disassociatedDataStorage is enabled, you can't disable it.
        /// 
        ///     -  
        /// 
        ///  
DISABLED – IoT SiteWise doesn't accept time series (data streams) that
        /// aren't associated with asset properties.
        /// 
        ///    
 
        /// 
        /// For more information, see Data
        /// streams in the IoT SiteWise User Guide.
        /// 
        /// 
        public DisassociatedDataStorageState DisassociatedDataStorage
        {
            get { return this._disassociatedDataStorage; }
            set { this._disassociatedDataStorage = value; }
        }
        // Check to see if DisassociatedDataStorage property is set
        internal bool IsSetDisassociatedDataStorage()
        {
            return this._disassociatedDataStorage != null;
        }
        /// 
        /// Gets and sets the property LastUpdateDate. 
        /// 
        /// The date the storage configuration was last updated, in Unix epoch time.
        /// 
        /// 
        public DateTime LastUpdateDate
        {
            get { return this._lastUpdateDate.GetValueOrDefault(); }
            set { this._lastUpdateDate = value; }
        }
        // Check to see if LastUpdateDate property is set
        internal bool IsSetLastUpdateDate()
        {
            return this._lastUpdateDate.HasValue; 
        }
        /// 
        /// Gets and sets the property MultiLayerStorage. 
        /// 
        /// Contains information about the storage destination.
        /// 
        /// 
        public MultiLayerStorage MultiLayerStorage
        {
            get { return this._multiLayerStorage; }
            set { this._multiLayerStorage = value; }
        }
        // Check to see if MultiLayerStorage property is set
        internal bool IsSetMultiLayerStorage()
        {
            return this._multiLayerStorage != null;
        }
        /// 
        /// Gets and sets the property RetentionPeriod. 
        /// 
        /// How many days your data is kept in the hot tier. By default, your data is kept indefinitely
        /// in the hot tier.
        /// 
        /// 
        public RetentionPeriod RetentionPeriod
        {
            get { return this._retentionPeriod; }
            set { this._retentionPeriod = value; }
        }
        // Check to see if RetentionPeriod property is set
        internal bool IsSetRetentionPeriod()
        {
            return this._retentionPeriod != null;
        }
        /// 
        /// Gets and sets the property StorageType. 
        /// 
        /// The storage tier that you specified for your data. The storageType parameter
        /// can be one of the following values:
        /// 
        ///   -  
        /// 
        ///  
SITEWISE_DEFAULT_STORAGE – IoT SiteWise saves your data into the hot
        /// tier. The hot tier is a service-managed database.
        /// 
        ///    -  
        /// 
        ///  
MULTI_LAYER_STORAGE – IoT SiteWise saves your data in both the cold
        /// tier and the hot tier. The cold tier is a customer-managed Amazon S3 bucket.
        /// 
        ///    
        /// 
        [AWSProperty(Required=true)]
        public StorageType StorageType
        {
            get { return this._storageType; }
            set { this._storageType = value; }
        }
        // Check to see if StorageType property is set
        internal bool IsSetStorageType()
        {
            return this._storageType != null;
        }
    }
}