/*
 * 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>
    /// GetNodesSingleHardwareUsb200ResponseDataInner
    /// </summary>
    [DataContract(Name = "getNodesSingleHardwareUsb_200_response_data_inner")]
    public partial class GetNodesSingleHardwareUsb200ResponseDataInner : IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetNodesSingleHardwareUsb200ResponseDataInner" /> class.
        /// </summary>
        /// <param name="busnum">busnum.</param>
        /// <param name="varClass">varClass.</param>
        /// <param name="devnum">devnum.</param>
        /// <param name="level">level.</param>
        /// <param name="manufacturer">manufacturer.</param>
        /// <param name="port">port.</param>
        /// <param name="prodid">prodid.</param>
        /// <param name="product">product.</param>
        /// <param name="serial">serial.</param>
        /// <param name="speed">speed.</param>
        /// <param name="usbpath">usbpath.</param>
        /// <param name="vendid">vendid.</param>
        public GetNodesSingleHardwareUsb200ResponseDataInner(Int64 busnum = default(Int64), Int64 varClass = default(Int64), Int64 devnum = default(Int64), Int64 level = default(Int64), string manufacturer = default(string), Int64 port = default(Int64), string prodid = default(string), string product = default(string), string serial = default(string), string speed = default(string), string usbpath = default(string), string vendid = default(string))
        {
            this.Busnum = busnum;
            this.Class = varClass;
            this.Devnum = devnum;
            this.Level = level;
            this.Manufacturer = manufacturer;
            this.Port = port;
            this.Prodid = prodid;
            this.Product = product;
            this.Serial = serial;
            this.Speed = speed;
            this.Usbpath = usbpath;
            this.Vendid = vendid;
        }

        /// <summary>
        /// Gets or Sets Busnum
        /// </summary>
        [DataMember(Name = "busnum", EmitDefaultValue = false)]
        public Int64 Busnum { get; set; }

        /// <summary>
        /// Gets or Sets Class
        /// </summary>
        [DataMember(Name = "class", EmitDefaultValue = false)]
        public Int64 Class { get; set; }

        /// <summary>
        /// Gets or Sets Devnum
        /// </summary>
        [DataMember(Name = "devnum", EmitDefaultValue = false)]
        public Int64 Devnum { get; set; }

        /// <summary>
        /// Gets or Sets Level
        /// </summary>
        [DataMember(Name = "level", EmitDefaultValue = false)]
        public Int64 Level { get; set; }

        /// <summary>
        /// Gets or Sets Manufacturer
        /// </summary>
        [DataMember(Name = "manufacturer", EmitDefaultValue = false)]
        public string Manufacturer { get; set; }

        /// <summary>
        /// Gets or Sets Port
        /// </summary>
        [DataMember(Name = "port", EmitDefaultValue = false)]
        public Int64 Port { get; set; }

        /// <summary>
        /// Gets or Sets Prodid
        /// </summary>
        [DataMember(Name = "prodid", EmitDefaultValue = false)]
        public string Prodid { get; set; }

        /// <summary>
        /// Gets or Sets Product
        /// </summary>
        [DataMember(Name = "product", EmitDefaultValue = false)]
        public string Product { get; set; }

        /// <summary>
        /// Gets or Sets Serial
        /// </summary>
        [DataMember(Name = "serial", EmitDefaultValue = false)]
        public string Serial { get; set; }

        /// <summary>
        /// Gets or Sets Speed
        /// </summary>
        [DataMember(Name = "speed", EmitDefaultValue = false)]
        public string Speed { get; set; }

        /// <summary>
        /// Gets or Sets Usbpath
        /// </summary>
        [DataMember(Name = "usbpath", EmitDefaultValue = false)]
        public string Usbpath { get; set; }

        /// <summary>
        /// Gets or Sets Vendid
        /// </summary>
        [DataMember(Name = "vendid", EmitDefaultValue = false)]
        public string Vendid { 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 GetNodesSingleHardwareUsb200ResponseDataInner {\n");
            sb.Append("  Busnum: ").Append(Busnum).Append("\n");
            sb.Append("  Class: ").Append(Class).Append("\n");
            sb.Append("  Devnum: ").Append(Devnum).Append("\n");
            sb.Append("  Level: ").Append(Level).Append("\n");
            sb.Append("  Manufacturer: ").Append(Manufacturer).Append("\n");
            sb.Append("  Port: ").Append(Port).Append("\n");
            sb.Append("  Prodid: ").Append(Prodid).Append("\n");
            sb.Append("  Product: ").Append(Product).Append("\n");
            sb.Append("  Serial: ").Append(Serial).Append("\n");
            sb.Append("  Speed: ").Append(Speed).Append("\n");
            sb.Append("  Usbpath: ").Append(Usbpath).Append("\n");
            sb.Append("  Vendid: ").Append(Vendid).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;
        }
    }

}
