/*
 * 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 ds-2015-04-16.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.DirectoryService.Model
{
    /// 
    /// Container for the parameters to the CreateTrust operation.
    /// Directory Service for Microsoft Active Directory allows you to configure trust relationships.
    /// For example, you can establish a trust between your Managed Microsoft AD directory,
    /// and your existing self-managed Microsoft Active Directory. This would allow you to
    /// provide users and groups access to resources in either domain, with a single set of
    /// credentials.
    /// 
    ///  
    /// 
    /// This action initiates the creation of the Amazon Web Services side of a trust relationship
    /// between an Managed Microsoft AD directory and an external domain. You can create either
    /// a forest trust or an external trust.
    /// 
    /// 
    public partial class CreateTrustRequest : AmazonDirectoryServiceRequest
    {
        private List _conditionalForwarderIpAddrs = new List();
        private string _directoryId;
        private string _remoteDomainName;
        private SelectiveAuth _selectiveAuth;
        private TrustDirection _trustDirection;
        private string _trustPassword;
        private TrustType _trustType;
        /// 
        /// Gets and sets the property ConditionalForwarderIpAddrs. 
        /// 
        /// The IP addresses of the remote DNS server associated with RemoteDomainName.
        /// 
        /// 
        public List ConditionalForwarderIpAddrs
        {
            get { return this._conditionalForwarderIpAddrs; }
            set { this._conditionalForwarderIpAddrs = value; }
        }
        // Check to see if ConditionalForwarderIpAddrs property is set
        internal bool IsSetConditionalForwarderIpAddrs()
        {
            return this._conditionalForwarderIpAddrs != null && this._conditionalForwarderIpAddrs.Count > 0; 
        }
        /// 
        /// Gets and sets the property DirectoryId. 
        /// 
        /// The Directory ID of the Managed Microsoft AD directory for which to establish the
        /// trust relationship.
        /// 
        /// 
        [AWSProperty(Required=true)]
        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 RemoteDomainName. 
        /// 
        /// The Fully Qualified Domain Name (FQDN) of the external domain for which to create
        /// the trust relationship.
        /// 
        /// 
        [AWSProperty(Required=true, Max=1024)]
        public string RemoteDomainName
        {
            get { return this._remoteDomainName; }
            set { this._remoteDomainName = value; }
        }
        // Check to see if RemoteDomainName property is set
        internal bool IsSetRemoteDomainName()
        {
            return this._remoteDomainName != null;
        }
        /// 
        /// Gets and sets the property SelectiveAuth. 
        /// 
        /// Optional parameter to enable selective authentication for the trust.
        /// 
        /// 
        public SelectiveAuth SelectiveAuth
        {
            get { return this._selectiveAuth; }
            set { this._selectiveAuth = value; }
        }
        // Check to see if SelectiveAuth property is set
        internal bool IsSetSelectiveAuth()
        {
            return this._selectiveAuth != null;
        }
        /// 
        /// Gets and sets the property TrustDirection. 
        /// 
        /// The direction of the trust relationship.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public TrustDirection TrustDirection
        {
            get { return this._trustDirection; }
            set { this._trustDirection = value; }
        }
        // Check to see if TrustDirection property is set
        internal bool IsSetTrustDirection()
        {
            return this._trustDirection != null;
        }
        /// 
        /// Gets and sets the property TrustPassword. 
        /// 
        /// The trust password. The must be the same password that was used when creating the
        /// trust relationship on the external domain.
        /// 
        /// 
        [AWSProperty(Required=true, Sensitive=true, Min=1, Max=128)]
        public string TrustPassword
        {
            get { return this._trustPassword; }
            set { this._trustPassword = value; }
        }
        // Check to see if TrustPassword property is set
        internal bool IsSetTrustPassword()
        {
            return this._trustPassword != null;
        }
        /// 
        /// Gets and sets the property TrustType. 
        /// 
        /// The trust relationship type. Forest is the default.
        /// 
        /// 
        public TrustType TrustType
        {
            get { return this._trustType; }
            set { this._trustType = value; }
        }
        // Check to see if TrustType property is set
        internal bool IsSetTrustType()
        {
            return this._trustType != null;
        }
    }
}