/*
 * 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 route53domains-2014-05-15.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.Route53Domains.Model
{
    /// 
    /// Container for the parameters to the TransferDomain operation.
    /// Transfers a domain from another registrar to Amazon Route 53. 
    /// 
    ///  
    /// 
    /// For more information about transferring domains, see the following topics:
    /// 
    ///   
    /// 
    /// If the registrar for your domain is also the DNS service provider for the domain,
    /// we highly recommend that you transfer your DNS service to Route 53 or to another DNS
    /// service provider before you transfer your registration. Some registrars provide free
    /// DNS service when you purchase a domain registration. When you transfer the registration,
    /// the previous registrar will not renew your domain registration and could end your
    /// DNS service at any time.
    /// 
    ///   
    /// 
    /// If the registrar for your domain is also the DNS service provider for the domain and
    /// you don't transfer DNS service to another provider, your website, email, and the web
    /// applications associated with the domain might become unavailable.
    /// 
    ///   
    /// 
    /// If the transfer is successful, this method returns an operation ID that you can use
    /// to track the progress and completion of the action. If the transfer doesn't complete
    /// successfully, the domain registrant will be notified by email.
    /// 
    /// 
    public partial class TransferDomainRequest : AmazonRoute53DomainsRequest
    {
        private ContactDetail _adminContact;
        private string _authCode;
        private bool? _autoRenew;
        private string _domainName;
        private int? _durationInYears;
        private string _idnLangCode;
        private List _nameservers = new List();
        private bool? _privacyProtectAdminContact;
        private bool? _privacyProtectRegistrantContact;
        private bool? _privacyProtectTechContact;
        private ContactDetail _registrantContact;
        private ContactDetail _techContact;
        /// 
        /// Gets and sets the property AdminContact. 
        /// 
        /// Provides detailed contact information.
        /// 
        /// 
        [AWSProperty(Required=true, Sensitive=true)]
        public ContactDetail AdminContact
        {
            get { return this._adminContact; }
            set { this._adminContact = value; }
        }
        // Check to see if AdminContact property is set
        internal bool IsSetAdminContact()
        {
            return this._adminContact != null;
        }
        /// 
        /// Gets and sets the property AuthCode. 
        /// 
        /// The authorization code for the domain. You get this value from the current registrar.
        /// 
        /// 
        [AWSProperty(Sensitive=true, Max=1024)]
        public string AuthCode
        {
            get { return this._authCode; }
            set { this._authCode = value; }
        }
        // Check to see if AuthCode property is set
        internal bool IsSetAuthCode()
        {
            return this._authCode != null;
        }
        /// 
        /// Gets and sets the property AutoRenew. 
        /// 
        /// Indicates whether the domain will be automatically renewed (true) or not (false).
        /// Auto renewal only takes effect after the account is charged.
        /// 
        ///  
        /// 
        /// Default: true
        /// 
        /// 
        public bool AutoRenew
        {
            get { return this._autoRenew.GetValueOrDefault(); }
            set { this._autoRenew = value; }
        }
        // Check to see if AutoRenew property is set
        internal bool IsSetAutoRenew()
        {
            return this._autoRenew.HasValue; 
        }
        /// 
        /// Gets and sets the property DomainName. 
        /// 
        /// The name of the domain that you want to transfer to Route 53. The top-level domain
        /// (TLD), such as .com, must be a TLD that Route 53 supports. For a list of supported
        /// TLDs, see Domains
        /// that You Can Register with Amazon Route 53 in the Amazon Route 53 Developer
        /// Guide.
        /// 
        ///  
        /// 
        /// The domain name can contain only the following characters:
        /// 
        ///   -  
        /// 
        /// Letters a through z. Domain names are not case sensitive.
        /// 
        ///  
-  
        /// 
        /// Numbers 0 through 9.
        /// 
        ///  
-  
        /// 
        /// Hyphen (-). You can't specify a hyphen at the beginning or end of a label. 
        /// 
        ///  
-  
        /// 
        /// Period (.) to separate the labels in the name, such as the .inexample.com.
        /// 
        ///
/// 
        [AWSProperty(Required=true, Max=255)]
        public string DomainName
        {
            get { return this._domainName; }
            set { this._domainName = value; }
        }
        // Check to see if DomainName property is set
        internal bool IsSetDomainName()
        {
            return this._domainName != null;
        }
        /// 
        /// Gets and sets the property DurationInYears. 
        /// 
        /// The number of years that you want to register the domain for. Domains are registered
        /// for a minimum of one year. The maximum period depends on the top-level domain.
        /// 
        ///  
        /// 
        /// Default: 1
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=10)]
        public int DurationInYears
        {
            get { return this._durationInYears.GetValueOrDefault(); }
            set { this._durationInYears = value; }
        }
        // Check to see if DurationInYears property is set
        internal bool IsSetDurationInYears()
        {
            return this._durationInYears.HasValue; 
        }
        /// 
        /// Gets and sets the property IdnLangCode. 
        /// 
        /// Reserved for future use.
        /// 
        /// 
        [AWSProperty(Max=3)]
        public string IdnLangCode
        {
            get { return this._idnLangCode; }
            set { this._idnLangCode = value; }
        }
        // Check to see if IdnLangCode property is set
        internal bool IsSetIdnLangCode()
        {
            return this._idnLangCode != null;
        }
        /// 
        /// Gets and sets the property Nameservers. 
        /// 
        /// Contains details for the host and glue IP addresses.
        /// 
        /// 
        public List Nameservers
        {
            get { return this._nameservers; }
            set { this._nameservers = value; }
        }
        // Check to see if Nameservers property is set
        internal bool IsSetNameservers()
        {
            return this._nameservers != null && this._nameservers.Count > 0; 
        }
        /// 
        /// Gets and sets the property PrivacyProtectAdminContact. 
        /// 
        /// Whether you want to conceal contact information from WHOIS queries. If you specify
        ///true, WHOIS ("who is") queries return contact information for the registrar,
        /// the phrase "REDACTED FOR PRIVACY", or "On behalf of <domain name> owner.".
        /// 
        ///   
        /// 
        /// While some domains may allow different privacy settings per contact, we recommend
        /// specifying the same privacy setting for all contacts.
        /// 
        ///   
        /// 
        /// Default: true 
        /// 
        /// 
        public bool PrivacyProtectAdminContact
        {
            get { return this._privacyProtectAdminContact.GetValueOrDefault(); }
            set { this._privacyProtectAdminContact = value; }
        }
        // Check to see if PrivacyProtectAdminContact property is set
        internal bool IsSetPrivacyProtectAdminContact()
        {
            return this._privacyProtectAdminContact.HasValue; 
        }
        /// 
        /// Gets and sets the property PrivacyProtectRegistrantContact. 
        /// 
        /// Whether you want to conceal contact information from WHOIS queries. If you specify
        /// true, WHOIS ("who is") queries return contact information either for
        /// Amazon Registrar (for .com, .net, and .org domains) or for our registrar associate,
        /// Gandi (for all other TLDs). If you specify false, WHOIS queries return
        /// the information that you entered for the registrant contact (domain owner).
        /// 
        ///   
        /// 
        /// You must specify the same privacy setting for the administrative, registrant, and
        /// technical contacts.
        /// 
        ///   
        /// 
        /// Default: true 
        /// 
        /// 
        public bool PrivacyProtectRegistrantContact
        {
            get { return this._privacyProtectRegistrantContact.GetValueOrDefault(); }
            set { this._privacyProtectRegistrantContact = value; }
        }
        // Check to see if PrivacyProtectRegistrantContact property is set
        internal bool IsSetPrivacyProtectRegistrantContact()
        {
            return this._privacyProtectRegistrantContact.HasValue; 
        }
        /// 
        /// Gets and sets the property PrivacyProtectTechContact. 
        /// 
        /// Whether you want to conceal contact information from WHOIS queries. If you specify
        /// true, WHOIS ("who is") queries return contact information either for
        /// Amazon Registrar (for .com, .net, and .org domains) or for our registrar associate,
        /// Gandi (for all other TLDs). If you specify false, WHOIS queries return
        /// the information that you entered for the technical contact.
        /// 
        ///   
        /// 
        /// You must specify the same privacy setting for the administrative, registrant, and
        /// technical contacts.
        /// 
        ///   
        /// 
        /// Default: true 
        /// 
        /// 
        public bool PrivacyProtectTechContact
        {
            get { return this._privacyProtectTechContact.GetValueOrDefault(); }
            set { this._privacyProtectTechContact = value; }
        }
        // Check to see if PrivacyProtectTechContact property is set
        internal bool IsSetPrivacyProtectTechContact()
        {
            return this._privacyProtectTechContact.HasValue; 
        }
        /// 
        /// Gets and sets the property RegistrantContact. 
        /// 
        /// Provides detailed contact information.
        /// 
        /// 
        [AWSProperty(Required=true, Sensitive=true)]
        public ContactDetail RegistrantContact
        {
            get { return this._registrantContact; }
            set { this._registrantContact = value; }
        }
        // Check to see if RegistrantContact property is set
        internal bool IsSetRegistrantContact()
        {
            return this._registrantContact != null;
        }
        /// 
        /// Gets and sets the property TechContact. 
        /// 
        /// Provides detailed contact information.
        /// 
        /// 
        [AWSProperty(Required=true, Sensitive=true)]
        public ContactDetail TechContact
        {
            get { return this._techContact; }
            set { this._techContact = value; }
        }
        // Check to see if TechContact property is set
        internal bool IsSetTechContact()
        {
            return this._techContact != null;
        }
    }
}