/*
 * 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 lightsail-2016-11-28.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.Lightsail.Model
{
    /// 
    /// Describes a domain recordset entry.
    /// 
    public partial class DomainEntry
    {
        private string _id;
        private bool? _isAlias;
        private string _name;
        private Dictionary _options = new Dictionary();
        private string _target;
        private string _type;
        /// 
        /// Gets and sets the property Id. 
        /// 
        /// The ID of the domain recordset entry.
        /// 
        /// 
        public string Id
        {
            get { return this._id; }
            set { this._id = value; }
        }
        // Check to see if Id property is set
        internal bool IsSetId()
        {
            return this._id != null;
        }
        /// 
        /// Gets and sets the property IsAlias. 
        /// 
        /// When true, specifies whether the domain entry is an alias used by the
        /// Lightsail load balancer, Lightsail container service, Lightsail content delivery network
        /// (CDN) distribution, or another Amazon Web Services resource. You can include an alias
        /// (A type) record in your request, which points to the DNS name of a load balancer,
        /// container service, CDN distribution, or other Amazon Web Services resource and routes
        /// traffic to that resource.
        /// 
        /// 
        public bool IsAlias
        {
            get { return this._isAlias.GetValueOrDefault(); }
            set { this._isAlias = value; }
        }
        // Check to see if IsAlias property is set
        internal bool IsSetIsAlias()
        {
            return this._isAlias.HasValue; 
        }
        /// 
        /// Gets and sets the property Name. 
        /// 
        /// The name of the domain.
        /// 
        /// 
        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }
        // Check to see if Name property is set
        internal bool IsSetName()
        {
            return this._name != null;
        }
        /// 
        /// Gets and sets the property Options. 
        /// 
        /// (Deprecated) The options for the domain entry.
        /// 
        ///   
        /// 
        /// In releases prior to November 29, 2017, this parameter was not included in the API
        /// response. It is now deprecated.
        /// 
        ///  
        /// 
        [Obsolete("In releases prior to November 29, 2017, this parameter was not included in the API response. It is now deprecated.")]
        public Dictionary Options
        {
            get { return this._options; }
            set { this._options = value; }
        }
        // Check to see if Options property is set
        internal bool IsSetOptions()
        {
            return this._options != null && this._options.Count > 0; 
        }
        /// 
        /// Gets and sets the property Target. 
        /// 
        /// The target IP address (e.g., 192.0.2.0), or AWS name server (e.g., ns-111.awsdns-22.com.).
        /// 
        ///  
        /// 
        /// For Lightsail load balancers, the value looks like ab1234c56789c6b86aba6fb203d443bc-123456789.us-east-2.elb.amazonaws.com.
        /// For Lightsail distributions, the value looks like exampled1182ne.cloudfront.net.
        /// For Lightsail container services, the value looks like container-service-1.example23scljs.us-west-2.cs.amazonlightsail.com.
        /// Be sure to also set isAlias to true when setting up an A
        /// record for a Lightsail load balancer, distribution, or container service.
        /// 
        /// 
        public string Target
        {
            get { return this._target; }
            set { this._target = value; }
        }
        // Check to see if Target property is set
        internal bool IsSetTarget()
        {
            return this._target != null;
        }
        /// 
        /// Gets and sets the property Type. 
        /// 
        /// The type of domain entry, such as address for IPv4 (A), address for IPv6 (AAAA), canonical
        /// name (CNAME), mail exchanger (MX), name server (NS), start of authority (SOA), service
        /// locator (SRV), or text (TXT).
        /// 
        ///  
        /// 
        /// The following domain entry types can be used:
        /// 
        ///   -  
        /// 
        ///  A/// 
        ///
-  
        /// 
        ///  AAAA/// 
        ///
-  
        /// 
        ///  CNAME/// 
        ///
-  
        /// 
        ///  MX/// 
        ///
-  
        /// 
        ///  NS/// 
        ///
-  
        /// 
        ///  SOA/// 
        ///
-  
        /// 
        ///  SRV/// 
        ///
-  
        /// 
        ///  TXT/// 
        ///
/// 
        public string Type
        {
            get { return this._type; }
            set { this._type = value; }
        }
        // Check to see if Type property is set
        internal bool IsSetType()
        {
            return this._type != null;
        }
    }
}