/*
 * ProxMox VE API
 *
 * ProxMox VE API
 *
 * The version of the OpenAPI document: 2.0
 * Contact: support@lumaserv.com
 * Generated by: https://github.com/openapitools/openapi-generator.git
 */


using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = ProxmoxSharp.Client.OpenAPIDateConverter;

namespace ProxmoxSharp.Model
{
    /// <summary>
    /// GetNodesSingleConfig200ResponseData
    /// </summary>
    [DataContract(Name = "getNodesSingleConfig_200_response_data")]
    public partial class GetNodesSingleConfig200ResponseData : IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetNodesSingleConfig200ResponseData" /> class.
        /// </summary>
        /// <param name="acme">Node specific ACME settings..</param>
        /// <param name="acmedomain0">ACME domain and validation plugin.</param>
        /// <param name="acmedomain1">ACME domain and validation plugin.</param>
        /// <param name="acmedomain2">ACME domain and validation plugin.</param>
        /// <param name="acmedomain3">ACME domain and validation plugin.</param>
        /// <param name="acmedomain4">ACME domain and validation plugin.</param>
        /// <param name="acmedomain5">ACME domain and validation plugin.</param>
        /// <param name="acmedomain6">ACME domain and validation plugin.</param>
        /// <param name="acmedomain7">ACME domain and validation plugin.</param>
        /// <param name="acmedomain8">ACME domain and validation plugin.</param>
        /// <param name="acmedomain9">ACME domain and validation plugin.</param>
        /// <param name="acmedomain10">ACME domain and validation plugin.</param>
        /// <param name="acmedomain11">ACME domain and validation plugin.</param>
        /// <param name="acmedomain12">ACME domain and validation plugin.</param>
        /// <param name="acmedomain13">ACME domain and validation plugin.</param>
        /// <param name="acmedomain14">ACME domain and validation plugin.</param>
        /// <param name="acmedomain15">ACME domain and validation plugin.</param>
        /// <param name="acmedomain16">ACME domain and validation plugin.</param>
        /// <param name="acmedomain17">ACME domain and validation plugin.</param>
        /// <param name="acmedomain18">ACME domain and validation plugin.</param>
        /// <param name="acmedomain19">ACME domain and validation plugin.</param>
        /// <param name="acmedomain20">ACME domain and validation plugin.</param>
        /// <param name="acmedomain21">ACME domain and validation plugin.</param>
        /// <param name="acmedomain22">ACME domain and validation plugin.</param>
        /// <param name="acmedomain23">ACME domain and validation plugin.</param>
        /// <param name="acmedomain24">ACME domain and validation plugin.</param>
        /// <param name="acmedomain25">ACME domain and validation plugin.</param>
        /// <param name="acmedomain26">ACME domain and validation plugin.</param>
        /// <param name="acmedomain27">ACME domain and validation plugin.</param>
        /// <param name="acmedomain28">ACME domain and validation plugin.</param>
        /// <param name="acmedomain29">ACME domain and validation plugin.</param>
        /// <param name="ballooningTarget">RAM usage target for ballooning (in percent of total memory).</param>
        /// <param name="description">Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file..</param>
        /// <param name="digest">Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications..</param>
        /// <param name="startallOnbootDelay">Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled..</param>
        /// <param name="wakeonlan">Node specific wake on LAN settings..</param>
        public GetNodesSingleConfig200ResponseData(string acme = default(string), string acmedomain0 = default(string), string acmedomain1 = default(string), string acmedomain2 = default(string), string acmedomain3 = default(string), string acmedomain4 = default(string), string acmedomain5 = default(string), string acmedomain6 = default(string), string acmedomain7 = default(string), string acmedomain8 = default(string), string acmedomain9 = default(string), string acmedomain10 = default(string), string acmedomain11 = default(string), string acmedomain12 = default(string), string acmedomain13 = default(string), string acmedomain14 = default(string), string acmedomain15 = default(string), string acmedomain16 = default(string), string acmedomain17 = default(string), string acmedomain18 = default(string), string acmedomain19 = default(string), string acmedomain20 = default(string), string acmedomain21 = default(string), string acmedomain22 = default(string), string acmedomain23 = default(string), string acmedomain24 = default(string), string acmedomain25 = default(string), string acmedomain26 = default(string), string acmedomain27 = default(string), string acmedomain28 = default(string), string acmedomain29 = default(string), Int64 ballooningTarget = default(Int64), string description = default(string), string digest = default(string), Int64 startallOnbootDelay = default(Int64), string wakeonlan = default(string))
        {
            this.Acme = acme;
            this.Acmedomain0 = acmedomain0;
            this.Acmedomain1 = acmedomain1;
            this.Acmedomain2 = acmedomain2;
            this.Acmedomain3 = acmedomain3;
            this.Acmedomain4 = acmedomain4;
            this.Acmedomain5 = acmedomain5;
            this.Acmedomain6 = acmedomain6;
            this.Acmedomain7 = acmedomain7;
            this.Acmedomain8 = acmedomain8;
            this.Acmedomain9 = acmedomain9;
            this.Acmedomain10 = acmedomain10;
            this.Acmedomain11 = acmedomain11;
            this.Acmedomain12 = acmedomain12;
            this.Acmedomain13 = acmedomain13;
            this.Acmedomain14 = acmedomain14;
            this.Acmedomain15 = acmedomain15;
            this.Acmedomain16 = acmedomain16;
            this.Acmedomain17 = acmedomain17;
            this.Acmedomain18 = acmedomain18;
            this.Acmedomain19 = acmedomain19;
            this.Acmedomain20 = acmedomain20;
            this.Acmedomain21 = acmedomain21;
            this.Acmedomain22 = acmedomain22;
            this.Acmedomain23 = acmedomain23;
            this.Acmedomain24 = acmedomain24;
            this.Acmedomain25 = acmedomain25;
            this.Acmedomain26 = acmedomain26;
            this.Acmedomain27 = acmedomain27;
            this.Acmedomain28 = acmedomain28;
            this.Acmedomain29 = acmedomain29;
            this.BallooningTarget = ballooningTarget;
            this.Description = description;
            this.Digest = digest;
            this.StartallOnbootDelay = startallOnbootDelay;
            this.Wakeonlan = wakeonlan;
        }

        /// <summary>
        /// Node specific ACME settings.
        /// </summary>
        /// <value>Node specific ACME settings.</value>
        [DataMember(Name = "acme", EmitDefaultValue = false)]
        public string Acme { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain0", EmitDefaultValue = false)]
        public string Acmedomain0 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain1", EmitDefaultValue = false)]
        public string Acmedomain1 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain2", EmitDefaultValue = false)]
        public string Acmedomain2 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain3", EmitDefaultValue = false)]
        public string Acmedomain3 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain4", EmitDefaultValue = false)]
        public string Acmedomain4 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain5", EmitDefaultValue = false)]
        public string Acmedomain5 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain6", EmitDefaultValue = false)]
        public string Acmedomain6 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain7", EmitDefaultValue = false)]
        public string Acmedomain7 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain8", EmitDefaultValue = false)]
        public string Acmedomain8 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain9", EmitDefaultValue = false)]
        public string Acmedomain9 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain10", EmitDefaultValue = false)]
        public string Acmedomain10 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain11", EmitDefaultValue = false)]
        public string Acmedomain11 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain12", EmitDefaultValue = false)]
        public string Acmedomain12 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain13", EmitDefaultValue = false)]
        public string Acmedomain13 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain14", EmitDefaultValue = false)]
        public string Acmedomain14 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain15", EmitDefaultValue = false)]
        public string Acmedomain15 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain16", EmitDefaultValue = false)]
        public string Acmedomain16 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain17", EmitDefaultValue = false)]
        public string Acmedomain17 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain18", EmitDefaultValue = false)]
        public string Acmedomain18 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain19", EmitDefaultValue = false)]
        public string Acmedomain19 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain20", EmitDefaultValue = false)]
        public string Acmedomain20 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain21", EmitDefaultValue = false)]
        public string Acmedomain21 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain22", EmitDefaultValue = false)]
        public string Acmedomain22 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain23", EmitDefaultValue = false)]
        public string Acmedomain23 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain24", EmitDefaultValue = false)]
        public string Acmedomain24 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain25", EmitDefaultValue = false)]
        public string Acmedomain25 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain26", EmitDefaultValue = false)]
        public string Acmedomain26 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain27", EmitDefaultValue = false)]
        public string Acmedomain27 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain28", EmitDefaultValue = false)]
        public string Acmedomain28 { get; set; }

        /// <summary>
        /// ACME domain and validation plugin
        /// </summary>
        /// <value>ACME domain and validation plugin</value>
        [DataMember(Name = "acmedomain29", EmitDefaultValue = false)]
        public string Acmedomain29 { get; set; }

        /// <summary>
        /// RAM usage target for ballooning (in percent of total memory)
        /// </summary>
        /// <value>RAM usage target for ballooning (in percent of total memory)</value>
        [DataMember(Name = "ballooning-target", EmitDefaultValue = false)]
        public Int64 BallooningTarget { get; set; }

        /// <summary>
        /// Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file.
        /// </summary>
        /// <value>Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file.</value>
        [DataMember(Name = "description", EmitDefaultValue = false)]
        public string Description { get; set; }

        /// <summary>
        /// Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.
        /// </summary>
        /// <value>Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.</value>
        [DataMember(Name = "digest", EmitDefaultValue = false)]
        public string Digest { get; set; }

        /// <summary>
        /// Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.
        /// </summary>
        /// <value>Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.</value>
        [DataMember(Name = "startall-onboot-delay", EmitDefaultValue = false)]
        public Int64 StartallOnbootDelay { get; set; }

        /// <summary>
        /// Node specific wake on LAN settings.
        /// </summary>
        /// <value>Node specific wake on LAN settings.</value>
        [DataMember(Name = "wakeonlan", EmitDefaultValue = false)]
        public string Wakeonlan { get; set; }

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("class GetNodesSingleConfig200ResponseData {\n");
            sb.Append("  Acme: ").Append(Acme).Append("\n");
            sb.Append("  Acmedomain0: ").Append(Acmedomain0).Append("\n");
            sb.Append("  Acmedomain1: ").Append(Acmedomain1).Append("\n");
            sb.Append("  Acmedomain2: ").Append(Acmedomain2).Append("\n");
            sb.Append("  Acmedomain3: ").Append(Acmedomain3).Append("\n");
            sb.Append("  Acmedomain4: ").Append(Acmedomain4).Append("\n");
            sb.Append("  Acmedomain5: ").Append(Acmedomain5).Append("\n");
            sb.Append("  Acmedomain6: ").Append(Acmedomain6).Append("\n");
            sb.Append("  Acmedomain7: ").Append(Acmedomain7).Append("\n");
            sb.Append("  Acmedomain8: ").Append(Acmedomain8).Append("\n");
            sb.Append("  Acmedomain9: ").Append(Acmedomain9).Append("\n");
            sb.Append("  Acmedomain10: ").Append(Acmedomain10).Append("\n");
            sb.Append("  Acmedomain11: ").Append(Acmedomain11).Append("\n");
            sb.Append("  Acmedomain12: ").Append(Acmedomain12).Append("\n");
            sb.Append("  Acmedomain13: ").Append(Acmedomain13).Append("\n");
            sb.Append("  Acmedomain14: ").Append(Acmedomain14).Append("\n");
            sb.Append("  Acmedomain15: ").Append(Acmedomain15).Append("\n");
            sb.Append("  Acmedomain16: ").Append(Acmedomain16).Append("\n");
            sb.Append("  Acmedomain17: ").Append(Acmedomain17).Append("\n");
            sb.Append("  Acmedomain18: ").Append(Acmedomain18).Append("\n");
            sb.Append("  Acmedomain19: ").Append(Acmedomain19).Append("\n");
            sb.Append("  Acmedomain20: ").Append(Acmedomain20).Append("\n");
            sb.Append("  Acmedomain21: ").Append(Acmedomain21).Append("\n");
            sb.Append("  Acmedomain22: ").Append(Acmedomain22).Append("\n");
            sb.Append("  Acmedomain23: ").Append(Acmedomain23).Append("\n");
            sb.Append("  Acmedomain24: ").Append(Acmedomain24).Append("\n");
            sb.Append("  Acmedomain25: ").Append(Acmedomain25).Append("\n");
            sb.Append("  Acmedomain26: ").Append(Acmedomain26).Append("\n");
            sb.Append("  Acmedomain27: ").Append(Acmedomain27).Append("\n");
            sb.Append("  Acmedomain28: ").Append(Acmedomain28).Append("\n");
            sb.Append("  Acmedomain29: ").Append(Acmedomain29).Append("\n");
            sb.Append("  BallooningTarget: ").Append(BallooningTarget).Append("\n");
            sb.Append("  Description: ").Append(Description).Append("\n");
            sb.Append("  Digest: ").Append(Digest).Append("\n");
            sb.Append("  StartallOnbootDelay: ").Append(StartallOnbootDelay).Append("\n");
            sb.Append("  Wakeonlan: ").Append(Wakeonlan).Append("\n");
            sb.Append("}\n");
            return sb.ToString();
        }

        /// <summary>
        /// Returns the JSON string presentation of the object
        /// </summary>
        /// <returns>JSON string presentation of the object</returns>
        public virtual string ToJson()
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
        }

        /// <summary>
        /// To validate all properties of the instance
        /// </summary>
        /// <param name="validationContext">Validation context</param>
        /// <returns>Validation Result</returns>
        IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
        {
            yield break;
        }
    }

}
