/*
 * 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>
    /// GetAccessRolesSingle200ResponseData
    /// </summary>
    [DataContract(Name = "getAccessRolesSingle_200_response_data")]
    public partial class GetAccessRolesSingle200ResponseData : IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetAccessRolesSingle200ResponseData" /> class.
        /// </summary>
        /// <param name="datastoreAllocate">datastoreAllocate.</param>
        /// <param name="datastoreAllocateSpace">datastoreAllocateSpace.</param>
        /// <param name="datastoreAllocateTemplate">datastoreAllocateTemplate.</param>
        /// <param name="datastoreAudit">datastoreAudit.</param>
        /// <param name="groupAllocate">groupAllocate.</param>
        /// <param name="mappingAudit">mappingAudit.</param>
        /// <param name="mappingModify">mappingModify.</param>
        /// <param name="mappingUse">mappingUse.</param>
        /// <param name="permissionsModify">permissionsModify.</param>
        /// <param name="poolAllocate">poolAllocate.</param>
        /// <param name="poolAudit">poolAudit.</param>
        /// <param name="realmAllocate">realmAllocate.</param>
        /// <param name="realmAllocateUser">realmAllocateUser.</param>
        /// <param name="sDNAllocate">sDNAllocate.</param>
        /// <param name="sDNAudit">sDNAudit.</param>
        /// <param name="sDNUse">sDNUse.</param>
        /// <param name="sysAccessNetwork">sysAccessNetwork.</param>
        /// <param name="sysAudit">sysAudit.</param>
        /// <param name="sysConsole">sysConsole.</param>
        /// <param name="sysIncoming">sysIncoming.</param>
        /// <param name="sysModify">sysModify.</param>
        /// <param name="sysPowerMgmt">sysPowerMgmt.</param>
        /// <param name="sysSyslog">sysSyslog.</param>
        /// <param name="userModify">userModify.</param>
        /// <param name="vMAllocate">vMAllocate.</param>
        /// <param name="vMAudit">vMAudit.</param>
        /// <param name="vMBackup">vMBackup.</param>
        /// <param name="vMClone">vMClone.</param>
        /// <param name="vMConfigCDROM">vMConfigCDROM.</param>
        /// <param name="vMConfigCPU">vMConfigCPU.</param>
        /// <param name="vMConfigCloudinit">vMConfigCloudinit.</param>
        /// <param name="vMConfigDisk">vMConfigDisk.</param>
        /// <param name="vMConfigHWType">vMConfigHWType.</param>
        /// <param name="vMConfigMemory">vMConfigMemory.</param>
        /// <param name="vMConfigNetwork">vMConfigNetwork.</param>
        /// <param name="vMConfigOptions">vMConfigOptions.</param>
        /// <param name="vMConsole">vMConsole.</param>
        /// <param name="vMGuestAgentAudit">vMGuestAgentAudit.</param>
        /// <param name="vMGuestAgentFileRead">vMGuestAgentFileRead.</param>
        /// <param name="vMGuestAgentFileSystemMgmt">vMGuestAgentFileSystemMgmt.</param>
        /// <param name="vMGuestAgentFileWrite">vMGuestAgentFileWrite.</param>
        /// <param name="vMGuestAgentUnrestricted">vMGuestAgentUnrestricted.</param>
        /// <param name="vMMigrate">vMMigrate.</param>
        /// <param name="vMPowerMgmt">vMPowerMgmt.</param>
        /// <param name="vMReplicate">vMReplicate.</param>
        /// <param name="vMSnapshot">vMSnapshot.</param>
        /// <param name="vMSnapshotRollback">vMSnapshotRollback.</param>
        public GetAccessRolesSingle200ResponseData(Int64 datastoreAllocate = default(Int64), Int64 datastoreAllocateSpace = default(Int64), Int64 datastoreAllocateTemplate = default(Int64), Int64 datastoreAudit = default(Int64), Int64 groupAllocate = default(Int64), Int64 mappingAudit = default(Int64), Int64 mappingModify = default(Int64), Int64 mappingUse = default(Int64), Int64 permissionsModify = default(Int64), Int64 poolAllocate = default(Int64), Int64 poolAudit = default(Int64), Int64 realmAllocate = default(Int64), Int64 realmAllocateUser = default(Int64), Int64 sDNAllocate = default(Int64), Int64 sDNAudit = default(Int64), Int64 sDNUse = default(Int64), Int64 sysAccessNetwork = default(Int64), Int64 sysAudit = default(Int64), Int64 sysConsole = default(Int64), Int64 sysIncoming = default(Int64), Int64 sysModify = default(Int64), Int64 sysPowerMgmt = default(Int64), Int64 sysSyslog = default(Int64), Int64 userModify = default(Int64), Int64 vMAllocate = default(Int64), Int64 vMAudit = default(Int64), Int64 vMBackup = default(Int64), Int64 vMClone = default(Int64), Int64 vMConfigCDROM = default(Int64), Int64 vMConfigCPU = default(Int64), Int64 vMConfigCloudinit = default(Int64), Int64 vMConfigDisk = default(Int64), Int64 vMConfigHWType = default(Int64), Int64 vMConfigMemory = default(Int64), Int64 vMConfigNetwork = default(Int64), Int64 vMConfigOptions = default(Int64), Int64 vMConsole = default(Int64), Int64 vMGuestAgentAudit = default(Int64), Int64 vMGuestAgentFileRead = default(Int64), Int64 vMGuestAgentFileSystemMgmt = default(Int64), Int64 vMGuestAgentFileWrite = default(Int64), Int64 vMGuestAgentUnrestricted = default(Int64), Int64 vMMigrate = default(Int64), Int64 vMPowerMgmt = default(Int64), Int64 vMReplicate = default(Int64), Int64 vMSnapshot = default(Int64), Int64 vMSnapshotRollback = default(Int64))
        {
            this.DatastoreAllocate = datastoreAllocate;
            this.DatastoreAllocateSpace = datastoreAllocateSpace;
            this.DatastoreAllocateTemplate = datastoreAllocateTemplate;
            this.DatastoreAudit = datastoreAudit;
            this.GroupAllocate = groupAllocate;
            this.MappingAudit = mappingAudit;
            this.MappingModify = mappingModify;
            this.MappingUse = mappingUse;
            this.PermissionsModify = permissionsModify;
            this.PoolAllocate = poolAllocate;
            this.PoolAudit = poolAudit;
            this.RealmAllocate = realmAllocate;
            this.RealmAllocateUser = realmAllocateUser;
            this.SDNAllocate = sDNAllocate;
            this.SDNAudit = sDNAudit;
            this.SDNUse = sDNUse;
            this.SysAccessNetwork = sysAccessNetwork;
            this.SysAudit = sysAudit;
            this.SysConsole = sysConsole;
            this.SysIncoming = sysIncoming;
            this.SysModify = sysModify;
            this.SysPowerMgmt = sysPowerMgmt;
            this.SysSyslog = sysSyslog;
            this.UserModify = userModify;
            this.VMAllocate = vMAllocate;
            this.VMAudit = vMAudit;
            this.VMBackup = vMBackup;
            this.VMClone = vMClone;
            this.VMConfigCDROM = vMConfigCDROM;
            this.VMConfigCPU = vMConfigCPU;
            this.VMConfigCloudinit = vMConfigCloudinit;
            this.VMConfigDisk = vMConfigDisk;
            this.VMConfigHWType = vMConfigHWType;
            this.VMConfigMemory = vMConfigMemory;
            this.VMConfigNetwork = vMConfigNetwork;
            this.VMConfigOptions = vMConfigOptions;
            this.VMConsole = vMConsole;
            this.VMGuestAgentAudit = vMGuestAgentAudit;
            this.VMGuestAgentFileRead = vMGuestAgentFileRead;
            this.VMGuestAgentFileSystemMgmt = vMGuestAgentFileSystemMgmt;
            this.VMGuestAgentFileWrite = vMGuestAgentFileWrite;
            this.VMGuestAgentUnrestricted = vMGuestAgentUnrestricted;
            this.VMMigrate = vMMigrate;
            this.VMPowerMgmt = vMPowerMgmt;
            this.VMReplicate = vMReplicate;
            this.VMSnapshot = vMSnapshot;
            this.VMSnapshotRollback = vMSnapshotRollback;
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        /// <summary>
        /// Gets or Sets VMConfigCDROM
        /// </summary>
        [DataMember(Name = "VM.Config.CDROM", EmitDefaultValue = false)]
        public Int64 VMConfigCDROM { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigCPU
        /// </summary>
        [DataMember(Name = "VM.Config.CPU", EmitDefaultValue = false)]
        public Int64 VMConfigCPU { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigCloudinit
        /// </summary>
        [DataMember(Name = "VM.Config.Cloudinit", EmitDefaultValue = false)]
        public Int64 VMConfigCloudinit { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigDisk
        /// </summary>
        [DataMember(Name = "VM.Config.Disk", EmitDefaultValue = false)]
        public Int64 VMConfigDisk { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigHWType
        /// </summary>
        [DataMember(Name = "VM.Config.HWType", EmitDefaultValue = false)]
        public Int64 VMConfigHWType { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigMemory
        /// </summary>
        [DataMember(Name = "VM.Config.Memory", EmitDefaultValue = false)]
        public Int64 VMConfigMemory { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigNetwork
        /// </summary>
        [DataMember(Name = "VM.Config.Network", EmitDefaultValue = false)]
        public Int64 VMConfigNetwork { get; set; }

        /// <summary>
        /// Gets or Sets VMConfigOptions
        /// </summary>
        [DataMember(Name = "VM.Config.Options", EmitDefaultValue = false)]
        public Int64 VMConfigOptions { get; set; }

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

        /// <summary>
        /// Gets or Sets VMGuestAgentAudit
        /// </summary>
        [DataMember(Name = "VM.GuestAgent.Audit", EmitDefaultValue = false)]
        public Int64 VMGuestAgentAudit { get; set; }

        /// <summary>
        /// Gets or Sets VMGuestAgentFileRead
        /// </summary>
        [DataMember(Name = "VM.GuestAgent.FileRead", EmitDefaultValue = false)]
        public Int64 VMGuestAgentFileRead { get; set; }

        /// <summary>
        /// Gets or Sets VMGuestAgentFileSystemMgmt
        /// </summary>
        [DataMember(Name = "VM.GuestAgent.FileSystemMgmt", EmitDefaultValue = false)]
        public Int64 VMGuestAgentFileSystemMgmt { get; set; }

        /// <summary>
        /// Gets or Sets VMGuestAgentFileWrite
        /// </summary>
        [DataMember(Name = "VM.GuestAgent.FileWrite", EmitDefaultValue = false)]
        public Int64 VMGuestAgentFileWrite { get; set; }

        /// <summary>
        /// Gets or Sets VMGuestAgentUnrestricted
        /// </summary>
        [DataMember(Name = "VM.GuestAgent.Unrestricted", EmitDefaultValue = false)]
        public Int64 VMGuestAgentUnrestricted { get; set; }

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

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

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

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

        /// <summary>
        /// Gets or Sets VMSnapshotRollback
        /// </summary>
        [DataMember(Name = "VM.Snapshot.Rollback", EmitDefaultValue = false)]
        public Int64 VMSnapshotRollback { 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 GetAccessRolesSingle200ResponseData {\n");
            sb.Append("  DatastoreAllocate: ").Append(DatastoreAllocate).Append("\n");
            sb.Append("  DatastoreAllocateSpace: ").Append(DatastoreAllocateSpace).Append("\n");
            sb.Append("  DatastoreAllocateTemplate: ").Append(DatastoreAllocateTemplate).Append("\n");
            sb.Append("  DatastoreAudit: ").Append(DatastoreAudit).Append("\n");
            sb.Append("  GroupAllocate: ").Append(GroupAllocate).Append("\n");
            sb.Append("  MappingAudit: ").Append(MappingAudit).Append("\n");
            sb.Append("  MappingModify: ").Append(MappingModify).Append("\n");
            sb.Append("  MappingUse: ").Append(MappingUse).Append("\n");
            sb.Append("  PermissionsModify: ").Append(PermissionsModify).Append("\n");
            sb.Append("  PoolAllocate: ").Append(PoolAllocate).Append("\n");
            sb.Append("  PoolAudit: ").Append(PoolAudit).Append("\n");
            sb.Append("  RealmAllocate: ").Append(RealmAllocate).Append("\n");
            sb.Append("  RealmAllocateUser: ").Append(RealmAllocateUser).Append("\n");
            sb.Append("  SDNAllocate: ").Append(SDNAllocate).Append("\n");
            sb.Append("  SDNAudit: ").Append(SDNAudit).Append("\n");
            sb.Append("  SDNUse: ").Append(SDNUse).Append("\n");
            sb.Append("  SysAccessNetwork: ").Append(SysAccessNetwork).Append("\n");
            sb.Append("  SysAudit: ").Append(SysAudit).Append("\n");
            sb.Append("  SysConsole: ").Append(SysConsole).Append("\n");
            sb.Append("  SysIncoming: ").Append(SysIncoming).Append("\n");
            sb.Append("  SysModify: ").Append(SysModify).Append("\n");
            sb.Append("  SysPowerMgmt: ").Append(SysPowerMgmt).Append("\n");
            sb.Append("  SysSyslog: ").Append(SysSyslog).Append("\n");
            sb.Append("  UserModify: ").Append(UserModify).Append("\n");
            sb.Append("  VMAllocate: ").Append(VMAllocate).Append("\n");
            sb.Append("  VMAudit: ").Append(VMAudit).Append("\n");
            sb.Append("  VMBackup: ").Append(VMBackup).Append("\n");
            sb.Append("  VMClone: ").Append(VMClone).Append("\n");
            sb.Append("  VMConfigCDROM: ").Append(VMConfigCDROM).Append("\n");
            sb.Append("  VMConfigCPU: ").Append(VMConfigCPU).Append("\n");
            sb.Append("  VMConfigCloudinit: ").Append(VMConfigCloudinit).Append("\n");
            sb.Append("  VMConfigDisk: ").Append(VMConfigDisk).Append("\n");
            sb.Append("  VMConfigHWType: ").Append(VMConfigHWType).Append("\n");
            sb.Append("  VMConfigMemory: ").Append(VMConfigMemory).Append("\n");
            sb.Append("  VMConfigNetwork: ").Append(VMConfigNetwork).Append("\n");
            sb.Append("  VMConfigOptions: ").Append(VMConfigOptions).Append("\n");
            sb.Append("  VMConsole: ").Append(VMConsole).Append("\n");
            sb.Append("  VMGuestAgentAudit: ").Append(VMGuestAgentAudit).Append("\n");
            sb.Append("  VMGuestAgentFileRead: ").Append(VMGuestAgentFileRead).Append("\n");
            sb.Append("  VMGuestAgentFileSystemMgmt: ").Append(VMGuestAgentFileSystemMgmt).Append("\n");
            sb.Append("  VMGuestAgentFileWrite: ").Append(VMGuestAgentFileWrite).Append("\n");
            sb.Append("  VMGuestAgentUnrestricted: ").Append(VMGuestAgentUnrestricted).Append("\n");
            sb.Append("  VMMigrate: ").Append(VMMigrate).Append("\n");
            sb.Append("  VMPowerMgmt: ").Append(VMPowerMgmt).Append("\n");
            sb.Append("  VMReplicate: ").Append(VMReplicate).Append("\n");
            sb.Append("  VMSnapshot: ").Append(VMSnapshot).Append("\n");
            sb.Append("  VMSnapshotRollback: ").Append(VMSnapshotRollback).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;
        }
    }

}
