/*
 * 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 rds-2014-10-31.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.RDS.Model
{
    /// 
    /// This data type is used as a response element in the action DescribeDBEngineVersions.
    /// 
    public partial class ModifyCustomDBEngineVersionResponse : AmazonWebServiceResponse
    {
        private DateTime? _createTime;
        private string _customDBEngineVersionManifest;
        private string _databaseInstallationFilesS3BucketName;
        private string _databaseInstallationFilesS3Prefix;
        private string _dbEngineDescription;
        private string _dbEngineMediaType;
        private string _dbEngineVersionArn;
        private string _dbEngineVersionDescription;
        private string _dbParameterGroupFamily;
        private CharacterSet _defaultCharacterSet;
        private string _engine;
        private string _engineVersion;
        private List _exportableLogTypes = new List();
        private CustomDBEngineVersionAMI _image;
        private string _kmsKeyId;
        private string _majorEngineVersion;
        private string _status;
        private List _supportedCACertificateIdentifiers = new List();
        private List _supportedCharacterSets = new List();
        private List _supportedEngineModes = new List();
        private List _supportedFeatureNames = new List();
        private List _supportedNcharCharacterSets = new List();
        private List _supportedTimezones = new List();
        private bool? _supportsBabelfish;
        private bool? _supportsCertificateRotationWithoutRestart;
        private bool? _supportsGlobalDatabases;
        private bool? _supportsLogExportsToCloudwatchLogs;
        private bool? _supportsParallelQuery;
        private bool? _supportsReadReplica;
        private List _tagList = new List();
        private List _validUpgradeTarget = new List();
        /// 
        /// Gets and sets the property CreateTime. 
        /// 
        /// The creation time of the DB engine version.
        /// 
        /// 
        public DateTime CreateTime
        {
            get { return this._createTime.GetValueOrDefault(); }
            set { this._createTime = value; }
        }
        // Check to see if CreateTime property is set
        internal bool IsSetCreateTime()
        {
            return this._createTime.HasValue; 
        }
        /// 
        /// Gets and sets the property CustomDBEngineVersionManifest. 
        /// 
        /// JSON string that lists the installation files and parameters that RDS Custom uses
        /// to create a custom engine version (CEV). RDS Custom applies the patches in the order
        /// in which they're listed in the manifest. You can set the Oracle home, Oracle base,
        /// and UNIX/Linux user and group using the installation parameters. For more information,
        /// see JSON
        /// fields in the CEV manifest in the Amazon RDS User Guide. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=51000)]
        public string CustomDBEngineVersionManifest
        {
            get { return this._customDBEngineVersionManifest; }
            set { this._customDBEngineVersionManifest = value; }
        }
        // Check to see if CustomDBEngineVersionManifest property is set
        internal bool IsSetCustomDBEngineVersionManifest()
        {
            return this._customDBEngineVersionManifest != null;
        }
        /// 
        /// Gets and sets the property DatabaseInstallationFilesS3BucketName. 
        /// 
        /// The name of the Amazon S3 bucket that contains your database installation files.
        /// 
        /// 
        public string DatabaseInstallationFilesS3BucketName
        {
            get { return this._databaseInstallationFilesS3BucketName; }
            set { this._databaseInstallationFilesS3BucketName = value; }
        }
        // Check to see if DatabaseInstallationFilesS3BucketName property is set
        internal bool IsSetDatabaseInstallationFilesS3BucketName()
        {
            return this._databaseInstallationFilesS3BucketName != null;
        }
        /// 
        /// Gets and sets the property DatabaseInstallationFilesS3Prefix. 
        /// 
        /// The Amazon S3 directory that contains the database installation files. If not specified,
        /// then no prefix is assumed.
        /// 
        /// 
        public string DatabaseInstallationFilesS3Prefix
        {
            get { return this._databaseInstallationFilesS3Prefix; }
            set { this._databaseInstallationFilesS3Prefix = value; }
        }
        // Check to see if DatabaseInstallationFilesS3Prefix property is set
        internal bool IsSetDatabaseInstallationFilesS3Prefix()
        {
            return this._databaseInstallationFilesS3Prefix != null;
        }
        /// 
        /// Gets and sets the property DBEngineDescription. 
        /// 
        /// The description of the database engine.
        /// 
        /// 
        public string DBEngineDescription
        {
            get { return this._dbEngineDescription; }
            set { this._dbEngineDescription = value; }
        }
        // Check to see if DBEngineDescription property is set
        internal bool IsSetDBEngineDescription()
        {
            return this._dbEngineDescription != null;
        }
        /// 
        /// Gets and sets the property DBEngineMediaType. 
        /// 
        /// A value that indicates the source media provider of the AMI based on the usage operation.
        /// Applicable for RDS Custom for SQL Server.
        /// 
        /// 
        public string DBEngineMediaType
        {
            get { return this._dbEngineMediaType; }
            set { this._dbEngineMediaType = value; }
        }
        // Check to see if DBEngineMediaType property is set
        internal bool IsSetDBEngineMediaType()
        {
            return this._dbEngineMediaType != null;
        }
        /// 
        /// Gets and sets the property DBEngineVersionArn. 
        /// 
        /// The ARN of the custom engine version.
        /// 
        /// 
        public string DBEngineVersionArn
        {
            get { return this._dbEngineVersionArn; }
            set { this._dbEngineVersionArn = value; }
        }
        // Check to see if DBEngineVersionArn property is set
        internal bool IsSetDBEngineVersionArn()
        {
            return this._dbEngineVersionArn != null;
        }
        /// 
        /// Gets and sets the property DBEngineVersionDescription. 
        /// 
        /// The description of the database engine version.
        /// 
        /// 
        public string DBEngineVersionDescription
        {
            get { return this._dbEngineVersionDescription; }
            set { this._dbEngineVersionDescription = value; }
        }
        // Check to see if DBEngineVersionDescription property is set
        internal bool IsSetDBEngineVersionDescription()
        {
            return this._dbEngineVersionDescription != null;
        }
        /// 
        /// Gets and sets the property DBParameterGroupFamily. 
        /// 
        /// The name of the DB parameter group family for the database engine.
        /// 
        /// 
        public string DBParameterGroupFamily
        {
            get { return this._dbParameterGroupFamily; }
            set { this._dbParameterGroupFamily = value; }
        }
        // Check to see if DBParameterGroupFamily property is set
        internal bool IsSetDBParameterGroupFamily()
        {
            return this._dbParameterGroupFamily != null;
        }
        /// 
        /// Gets and sets the property DefaultCharacterSet. 
        /// 
        /// The default character set for new instances of this engine version, if the CharacterSetName
        /// parameter of the CreateDBInstance API isn't specified.
        /// 
        /// 
        public CharacterSet DefaultCharacterSet
        {
            get { return this._defaultCharacterSet; }
            set { this._defaultCharacterSet = value; }
        }
        // Check to see if DefaultCharacterSet property is set
        internal bool IsSetDefaultCharacterSet()
        {
            return this._defaultCharacterSet != null;
        }
        /// 
        /// Gets and sets the property Engine. 
        /// 
        /// The name of the database engine.
        /// 
        /// 
        public string Engine
        {
            get { return this._engine; }
            set { this._engine = value; }
        }
        // Check to see if Engine property is set
        internal bool IsSetEngine()
        {
            return this._engine != null;
        }
        /// 
        /// Gets and sets the property EngineVersion. 
        /// 
        /// The version number of the database engine.
        /// 
        /// 
        public string EngineVersion
        {
            get { return this._engineVersion; }
            set { this._engineVersion = value; }
        }
        // Check to see if EngineVersion property is set
        internal bool IsSetEngineVersion()
        {
            return this._engineVersion != null;
        }
        /// 
        /// Gets and sets the property ExportableLogTypes. 
        /// 
        /// The types of logs that the database engine has available for export to CloudWatch
        /// Logs.
        /// 
        /// 
        public List ExportableLogTypes
        {
            get { return this._exportableLogTypes; }
            set { this._exportableLogTypes = value; }
        }
        // Check to see if ExportableLogTypes property is set
        internal bool IsSetExportableLogTypes()
        {
            return this._exportableLogTypes != null && this._exportableLogTypes.Count > 0; 
        }
        /// 
        /// Gets and sets the property Image. 
        /// 
        /// The EC2 image
        /// 
        /// 
        public CustomDBEngineVersionAMI Image
        {
            get { return this._image; }
            set { this._image = value; }
        }
        // Check to see if Image property is set
        internal bool IsSetImage()
        {
            return this._image != null;
        }
        /// 
        /// Gets and sets the property KMSKeyId. 
        /// 
        /// The Amazon Web Services KMS key identifier for an encrypted CEV. This parameter is
        /// required for RDS Custom, but optional for Amazon RDS.
        /// 
        /// 
        public string KMSKeyId
        {
            get { return this._kmsKeyId; }
            set { this._kmsKeyId = value; }
        }
        // Check to see if KMSKeyId property is set
        internal bool IsSetKMSKeyId()
        {
            return this._kmsKeyId != null;
        }
        /// 
        /// Gets and sets the property MajorEngineVersion. 
        /// 
        /// The major engine version of the CEV.
        /// 
        /// 
        public string MajorEngineVersion
        {
            get { return this._majorEngineVersion; }
            set { this._majorEngineVersion = value; }
        }
        // Check to see if MajorEngineVersion property is set
        internal bool IsSetMajorEngineVersion()
        {
            return this._majorEngineVersion != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The status of the DB engine version, either available or deprecated.
        /// 
        /// 
        public string Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
        /// 
        /// Gets and sets the property SupportedCACertificateIdentifiers. 
        /// 
        /// A list of the supported CA certificate identifiers.
        /// 
        ///  
        /// 
        /// For more information, see Using
        /// SSL/TLS to encrypt a connection to a DB instance in the Amazon RDS User Guide
        /// and 
        /// Using SSL/TLS to encrypt a connection to a DB cluster in the Amazon Aurora
        /// User Guide.
        /// 
        /// 
        public List SupportedCACertificateIdentifiers
        {
            get { return this._supportedCACertificateIdentifiers; }
            set { this._supportedCACertificateIdentifiers = value; }
        }
        // Check to see if SupportedCACertificateIdentifiers property is set
        internal bool IsSetSupportedCACertificateIdentifiers()
        {
            return this._supportedCACertificateIdentifiers != null && this._supportedCACertificateIdentifiers.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportedCharacterSets. 
        /// 
        /// A list of the character sets supported by this engine for the CharacterSetName
        /// parameter of the CreateDBInstance operation.
        /// 
        /// 
        public List SupportedCharacterSets
        {
            get { return this._supportedCharacterSets; }
            set { this._supportedCharacterSets = value; }
        }
        // Check to see if SupportedCharacterSets property is set
        internal bool IsSetSupportedCharacterSets()
        {
            return this._supportedCharacterSets != null && this._supportedCharacterSets.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportedEngineModes. 
        /// 
        /// A list of the supported DB engine modes.
        /// 
        /// 
        public List SupportedEngineModes
        {
            get { return this._supportedEngineModes; }
            set { this._supportedEngineModes = value; }
        }
        // Check to see if SupportedEngineModes property is set
        internal bool IsSetSupportedEngineModes()
        {
            return this._supportedEngineModes != null && this._supportedEngineModes.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportedFeatureNames. 
        /// 
        /// A list of features supported by the DB engine.
        /// 
        ///  
        /// 
        /// The supported features vary by DB engine and DB engine version.
        /// 
        ///  
        /// 
        /// To determine the supported features for a specific DB engine and DB engine version
        /// using the CLI, use the following command:
        /// 
        ///  
        /// 
        ///  aws rds describe-db-engine-versions --engine <engine_name> --engine-version
        /// <engine_version> 
        /// 
        ///  
        /// 
        /// For example, to determine the supported features for RDS for PostgreSQL version 13.3
        /// using the CLI, use the following command:
        /// 
        ///  
        /// 
        ///  aws rds describe-db-engine-versions --engine postgres --engine-version 13.3
        /// 
        /// 
        ///  
        /// 
        /// The supported features are listed under SupportedFeatureNames in the
        /// output.
        /// 
        /// 
        public List SupportedFeatureNames
        {
            get { return this._supportedFeatureNames; }
            set { this._supportedFeatureNames = value; }
        }
        // Check to see if SupportedFeatureNames property is set
        internal bool IsSetSupportedFeatureNames()
        {
            return this._supportedFeatureNames != null && this._supportedFeatureNames.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportedNcharCharacterSets. 
        /// 
        /// A list of the character sets supported by the Oracle DB engine for the NcharCharacterSetName
        /// parameter of the CreateDBInstance operation.
        /// 
        /// 
        public List SupportedNcharCharacterSets
        {
            get { return this._supportedNcharCharacterSets; }
            set { this._supportedNcharCharacterSets = value; }
        }
        // Check to see if SupportedNcharCharacterSets property is set
        internal bool IsSetSupportedNcharCharacterSets()
        {
            return this._supportedNcharCharacterSets != null && this._supportedNcharCharacterSets.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportedTimezones. 
        /// 
        /// A list of the time zones supported by this engine for the Timezone parameter
        /// of the CreateDBInstance action.
        /// 
        /// 
        public List SupportedTimezones
        {
            get { return this._supportedTimezones; }
            set { this._supportedTimezones = value; }
        }
        // Check to see if SupportedTimezones property is set
        internal bool IsSetSupportedTimezones()
        {
            return this._supportedTimezones != null && this._supportedTimezones.Count > 0; 
        }
        /// 
        /// Gets and sets the property SupportsBabelfish. 
        /// 
        /// A value that indicates whether the engine version supports Babelfish for Aurora PostgreSQL.
        /// 
        /// 
        public bool SupportsBabelfish
        {
            get { return this._supportsBabelfish.GetValueOrDefault(); }
            set { this._supportsBabelfish = value; }
        }
        // Check to see if SupportsBabelfish property is set
        internal bool IsSetSupportsBabelfish()
        {
            return this._supportsBabelfish.HasValue; 
        }
        /// 
        /// Gets and sets the property SupportsCertificateRotationWithoutRestart. 
        /// 
        /// A value that indicates whether the engine version supports rotating the server certificate
        /// without rebooting the DB instance.
        /// 
        /// 
        public bool SupportsCertificateRotationWithoutRestart
        {
            get { return this._supportsCertificateRotationWithoutRestart.GetValueOrDefault(); }
            set { this._supportsCertificateRotationWithoutRestart = value; }
        }
        // Check to see if SupportsCertificateRotationWithoutRestart property is set
        internal bool IsSetSupportsCertificateRotationWithoutRestart()
        {
            return this._supportsCertificateRotationWithoutRestart.HasValue; 
        }
        /// 
        /// Gets and sets the property SupportsGlobalDatabases. 
        /// 
        /// A value that indicates whether you can use Aurora global databases with a specific
        /// DB engine version.
        /// 
        /// 
        public bool SupportsGlobalDatabases
        {
            get { return this._supportsGlobalDatabases.GetValueOrDefault(); }
            set { this._supportsGlobalDatabases = value; }
        }
        // Check to see if SupportsGlobalDatabases property is set
        internal bool IsSetSupportsGlobalDatabases()
        {
            return this._supportsGlobalDatabases.HasValue; 
        }
        /// 
        /// Gets and sets the property SupportsLogExportsToCloudwatchLogs. 
        /// 
        /// A value that indicates whether the engine version supports exporting the log types
        /// specified by ExportableLogTypes to CloudWatch Logs.
        /// 
        /// 
        public bool SupportsLogExportsToCloudwatchLogs
        {
            get { return this._supportsLogExportsToCloudwatchLogs.GetValueOrDefault(); }
            set { this._supportsLogExportsToCloudwatchLogs = value; }
        }
        // Check to see if SupportsLogExportsToCloudwatchLogs property is set
        internal bool IsSetSupportsLogExportsToCloudwatchLogs()
        {
            return this._supportsLogExportsToCloudwatchLogs.HasValue; 
        }
        /// 
        /// Gets and sets the property SupportsParallelQuery. 
        /// 
        /// A value that indicates whether you can use Aurora parallel query with a specific DB
        /// engine version.
        /// 
        /// 
        public bool SupportsParallelQuery
        {
            get { return this._supportsParallelQuery.GetValueOrDefault(); }
            set { this._supportsParallelQuery = value; }
        }
        // Check to see if SupportsParallelQuery property is set
        internal bool IsSetSupportsParallelQuery()
        {
            return this._supportsParallelQuery.HasValue; 
        }
        /// 
        /// Gets and sets the property SupportsReadReplica. 
        /// 
        /// Indicates whether the database engine version supports read replicas.
        /// 
        /// 
        public bool SupportsReadReplica
        {
            get { return this._supportsReadReplica.GetValueOrDefault(); }
            set { this._supportsReadReplica = value; }
        }
        // Check to see if SupportsReadReplica property is set
        internal bool IsSetSupportsReadReplica()
        {
            return this._supportsReadReplica.HasValue; 
        }
        /// 
        /// Gets and sets the property TagList.
        /// 
        public List TagList
        {
            get { return this._tagList; }
            set { this._tagList = value; }
        }
        // Check to see if TagList property is set
        internal bool IsSetTagList()
        {
            return this._tagList != null && this._tagList.Count > 0; 
        }
        /// 
        /// Gets and sets the property ValidUpgradeTarget. 
        /// 
        /// A list of engine versions that this database engine version can be upgraded to.
        /// 
        /// 
        public List ValidUpgradeTarget
        {
            get { return this._validUpgradeTarget; }
            set { this._validUpgradeTarget = value; }
        }
        // Check to see if ValidUpgradeTarget property is set
        internal bool IsSetValidUpgradeTarget()
        {
            return this._validUpgradeTarget != null && this._validUpgradeTarget.Count > 0; 
        }
    }
}