/// <summary>
 /// Initializes a new instance of the <see cref="SecuritySettingsUpdateSpec" /> class.
 /// </summary>
 /// <param name="dataRecoveryPasswordHash">The SHA-256 hash of the (UTF-8) data recovery password..</param>
 /// <param name="dataRecoveryPasswordHint">The data recovery password hint. This property has a maximum length of 128 characters..</param>
 /// <param name="messageSecurityMode">Determines if signing and verification of the JMS messages passed between Horizon components takes place. * DISABLED: Message security mode is disabled. * MIXED: Message security mode is enabled but not enforced. * ENABLED: Message security mode is enabled. Unsigned messages are rejected by Horizon components. * ENHANCED: Message Security mode is Enhanced. Message signing and validation is performed based on the current Security Level and desktop Message Security mode. (required).</param>
 /// <param name="reAuthSecureTunnelAfterInterruption">Determines if user credentials must be re-authenticated after a network interruption when Horizon clients use secure tunnel connections to Horizon resources. When you select this setting, if a secure tunnel connection ends during a session, Horizon Client requires the user to re-authenticate before reconnecting..</param>
 public SecuritySettingsUpdateSpec(List <string> dataRecoveryPasswordHash = default(List <string>), string dataRecoveryPasswordHint = default(string), MessageSecurityModeEnum messageSecurityMode = default(MessageSecurityModeEnum), bool?reAuthSecureTunnelAfterInterruption = default(bool?))
 {
     // to ensure "messageSecurityMode" is required (not null)
     if (messageSecurityMode == null)
     {
         throw new InvalidDataException("messageSecurityMode is a required property for SecuritySettingsUpdateSpec and cannot be null");
     }
     else
     {
         this.MessageSecurityMode = messageSecurityMode;
     }
     this.DataRecoveryPasswordHash            = dataRecoveryPasswordHash;
     this.DataRecoveryPasswordHint            = dataRecoveryPasswordHint;
     this.ReAuthSecureTunnelAfterInterruption = reAuthSecureTunnelAfterInterruption;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SecuritySettings" /> class.
 /// </summary>
 /// <param name="clusterPublicKey">The Base 64 encoded public key of the cluster in PEM format. (required).</param>
 /// <param name="clusterPublicKeyId">Key Id to identify the cluster&#39;s active key pair..</param>
 /// <param name="dataRecoveryPasswordConfigured">Indicates whether the backup recovery password has been configured. (required).</param>
 /// <param name="messageSecurityMode">Determines if signing and verification of the JMS messages passed between Horizon components takes place. * DISABLED: Message security mode is disabled. * MIXED: Message security mode is enabled but not enforced. * ENABLED: Message security mode is enabled. Unsigned messages are rejected by Horizon components. * ENHANCED: Message Security mode is Enhanced. Message signing and validation is performed based on the current Security Level and desktop Message Security mode. (required).</param>
 /// <param name="messageSecurityStatus">The status of the JMS message security. This tracks the application of changes to messageSecurityMode. * READY: The cluster is performing at the specified message security mode. * INITIALIZING_ENHANCED: The cluster is initializing a transition to the ENHANCED message security mode. * PENDING_ENHANCED: The cluster is propagating the change to ENHANCED message security mode to all nodes. * LEAVING_ENHANCED: The cluster is leaving the ENHANCED message security mode. (required).</param>
 /// <param name="reAuthSecureTunnelAfterInterruption">Determines if user credentials must be re-authenticated after a network interruption when Horizon clients use secure tunnel connections to Horizon resources. When you select this setting, if a secure tunnel connection ends during a session, Horizon Client requires the user to re-authenticate before reconnecting. (required).</param>
 public SecuritySettings(string clusterPublicKey = default(string), string clusterPublicKeyId = default(string), bool?dataRecoveryPasswordConfigured = default(bool?), MessageSecurityModeEnum messageSecurityMode = default(MessageSecurityModeEnum), MessageSecurityStatusEnum messageSecurityStatus = default(MessageSecurityStatusEnum), bool?reAuthSecureTunnelAfterInterruption = default(bool?))
 {
     // to ensure "clusterPublicKey" is required (not null)
     if (clusterPublicKey == null)
     {
         throw new InvalidDataException("clusterPublicKey is a required property for SecuritySettings and cannot be null");
     }
     else
     {
         this.ClusterPublicKey = clusterPublicKey;
     }
     // to ensure "dataRecoveryPasswordConfigured" is required (not null)
     if (dataRecoveryPasswordConfigured == null)
     {
         throw new InvalidDataException("dataRecoveryPasswordConfigured is a required property for SecuritySettings and cannot be null");
     }
     else
     {
         this.DataRecoveryPasswordConfigured = dataRecoveryPasswordConfigured;
     }
     // to ensure "messageSecurityMode" is required (not null)
     if (messageSecurityMode == null)
     {
         throw new InvalidDataException("messageSecurityMode is a required property for SecuritySettings and cannot be null");
     }
     else
     {
         this.MessageSecurityMode = messageSecurityMode;
     }
     // to ensure "messageSecurityStatus" is required (not null)
     if (messageSecurityStatus == null)
     {
         throw new InvalidDataException("messageSecurityStatus is a required property for SecuritySettings and cannot be null");
     }
     else
     {
         this.MessageSecurityStatus = messageSecurityStatus;
     }
     // to ensure "reAuthSecureTunnelAfterInterruption" is required (not null)
     if (reAuthSecureTunnelAfterInterruption == null)
     {
         throw new InvalidDataException("reAuthSecureTunnelAfterInterruption is a required property for SecuritySettings and cannot be null");
     }
     else
     {
         this.ReAuthSecureTunnelAfterInterruption = reAuthSecureTunnelAfterInterruption;
     }
     this.ClusterPublicKeyId = clusterPublicKeyId;
 }