generated/api/Models/LaptopPlanDetails.cs

// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.9.4, generator: @autorest/powershell@3.0.415)
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Commvault.Powershell.Models
{
    using static Commvault.Powershell.Runtime.Extensions;

    public partial class LaptopPlanDetails :
        Commvault.Powershell.Models.ILaptopPlanDetails,
        Commvault.Powershell.Models.ILaptopPlanDetailsInternal
    {

        /// <summary>Backing field for <see cref="AdditionalProperties" /> property.</summary>
        private Commvault.Powershell.Models.IPlanAdditionalProperties _additionalProperties;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanAdditionalProperties AdditionalProperties { get => (this._additionalProperties = this._additionalProperties ?? new Commvault.Powershell.Models.PlanAdditionalProperties()); set => this._additionalProperties = value; }

        /// <summary>The least RPO in minutes for the plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? AdditionalPropertyRpo { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Rpo; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Rpo = value ?? default(long); }

        /// <summary>status if plan backups are enabled or disabled</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AdditionalPropertyStatus { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Status; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Status = value ?? null; }

        /// <summary>Database options should be shown with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AddonDatabase { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonDatabase; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonDatabase = value ?? default(bool); }

        /// <summary>File system options should be shown with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AddonFileSystem { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonFileSystem; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonFileSystem = value ?? default(bool); }

        /// <summary>Index copy options should be shown with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AddonIndexCopy { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonIndexCopy; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonIndexCopy = value ?? default(bool); }

        /// <summary>Snap options should be shown with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AddonSnap { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonSnap; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonSnap = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AddonSnapStatus { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonSnapStatus; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).AddonSnapStatus = value ?? null; }

        /// <summary>Backing field for <see cref="Alerts" /> property.</summary>
        private Commvault.Powershell.Models.IIdName[] _alerts;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdName[] Alerts { get => this._alerts; set => this._alerts = value; }

        /// <summary>Backing field for <see cref="AllowPlanOverride" /> property.</summary>
        private bool? _allowPlanOverride;

        /// <summary>Flag to enable overriding of plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? AllowPlanOverride { get => this._allowPlanOverride; set => this._allowPlanOverride = value; }

        /// <summary>Flag to enable archiving of laptop data</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AllowedFeatureArchiving { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).Archiving; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).Archiving = value ?? default(bool); }

        /// <summary>Flag to enable Data loss protection</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AllowedFeatureDlp { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).Dlp; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).Dlp = value ?? default(bool); }

        /// <summary>Flag to enable Edge Drive</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AllowedFeatureEdgeDrive { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDrive; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDrive = value ?? default(bool); }

        /// <summary>Backing field for <see cref="AllowedFeatures" /> property.</summary>
        private Commvault.Powershell.Models.IAllowedFeatures _allowedFeatures;

        /// <summary>Get details about allowed features of a laptop plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IAllowedFeatures AllowedFeatures { get => (this._allowedFeatures = this._allowedFeatures ?? new Commvault.Powershell.Models.AllowedFeatures()); set => this._allowedFeatures = value; }

        /// <summary>
        /// After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving
        /// rules
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchivingRuleAfterArchiving { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleAfterArchiving; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleAfterArchiving = value ?? null; }

        /// <summary>To archive files based on the Read-Only attribute, set to TRUE</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? ArchivingRuleArchiveReadOnlyFiles { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleArchiveReadOnlyFiles; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleArchiveReadOnlyFiles = value ?? default(bool); }

        /// <summary>
        /// To archive files based on the last accessed date of each file within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileAccessTimeOlderThan { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileAccessTimeOlderThan; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileAccessTimeOlderThan = value ?? default(long); }

        /// <summary>
        /// To archive files based on the time the files were created within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileCreatedTimeOlderThan { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileCreatedTimeOlderThan; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileCreatedTimeOlderThan = value ?? default(long); }

        /// <summary>
        /// To archive files based on the last modified date of each file within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileModifiedTimeOlderThan { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileModifiedTimeOlderThan; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileModifiedTimeOlderThan = value ?? default(long); }

        /// <summary>
        /// To archive files based on the size of the file, specify the minimum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileSizeGreaterThan { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileSizeGreaterThan; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleFileSizeGreaterThan = value ?? default(long); }

        /// <summary>
        /// To archive files based on the size of the file, specify the maximum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleMaximumFileSize { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleMaximumFileSize; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleMaximumFileSize = value ?? default(long); }

        /// <summary>
        /// When free disk space falls below specified amount (in percentage), start cleaning up the disk
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleStartCleaningIfLessThan { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleStartCleaningIfLessThan; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleStartCleaningIfLessThan = value ?? default(long); }

        /// <summary>
        /// When free disk space more than specified amount (in percentage), stop cleaning up the disk
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleStopCleaningIfupto { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleStopCleaningIfupto; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRuleStopCleaningIfupto = value ?? default(long); }

        /// <summary>Backing field for <see cref="AssociatedUsersAndUserGroups" /> property.</summary>
        private Commvault.Powershell.Models.IPlanUserOrGroups[] _associatedUsersAndUserGroups;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IPlanUserOrGroups[] AssociatedUsersAndUserGroups { get => this._associatedUsersAndUserGroups; set => this._associatedUsersAndUserGroups = value; }

        /// <summary>Backing field for <see cref="BackupContent" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanBackupContent _backupContent;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanBackupContent BackupContent { get => (this._backupContent = this._backupContent ?? new Commvault.Powershell.Models.LaptopPlanBackupContent()); set => this._backupContent = value; }

        /// <summary>
        /// Maximum number of gigabytes that you can store in the File System. Giving value as -1 means infinite file system quota.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? BackupContentFileSystemQuota { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).FileSystemQuota; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).FileSystemQuota = value ?? default(long); }

        /// <summary>Paths to exclude for Mac</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentMacExcludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).MacExcludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).MacExcludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Paths to include for Mac</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentMacIncludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).MacIncludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).MacIncludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? BackupContentOverridden { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContentOverridden; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContentOverridden = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string BackupContentOverrideBase { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContentOverrideBase; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContentOverrideBase = value ?? null; }

        /// <summary>Paths to exclude for UNIX</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentUnixExcludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).UnixExcludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).UnixExcludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Paths to include for UNIX</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentUnixIncludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).UnixIncludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).UnixIncludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Paths to exclude for Windows</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentWindowsExcludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).WindowsExcludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).WindowsExcludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Paths to include for Windows</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] BackupContentWindowsIncludedPaths { get => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).WindowsIncludedPaths; set => ((Commvault.Powershell.Models.ILaptopPlanBackupContentInternal)BackupContent).WindowsIncludedPaths = value ?? null /* arrayOf */; }

        /// <summary>Backing field for <see cref="BackupDestinations" /> property.</summary>
        private Commvault.Powershell.Models.IPlanBackupDestination[] _backupDestinations;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IPlanBackupDestination[] BackupDestinations { get => this._backupDestinations; set => this._backupDestinations = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? BasePlanId { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlanId; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlanId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string BasePlanName { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlanName; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlanName = value ?? null; }

        /// <summary>Internal Acessors for AdditionalProperties</summary>
        Commvault.Powershell.Models.IPlanAdditionalProperties Commvault.Powershell.Models.ILaptopPlanDetailsInternal.AdditionalProperties { get => (this._additionalProperties = this._additionalProperties ?? new Commvault.Powershell.Models.PlanAdditionalProperties()); set { {_additionalProperties = value;} } }

        /// <summary>Internal Acessors for AdditionalPropertyAddons</summary>
        Commvault.Powershell.Models.IPlanAddons Commvault.Powershell.Models.ILaptopPlanDetailsInternal.AdditionalPropertyAddons { get => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Addons; set => ((Commvault.Powershell.Models.IPlanAdditionalPropertiesInternal)AdditionalProperties).Addons = value; }

        /// <summary>Internal Acessors for AllowedFeatureArchivingRules</summary>
        Commvault.Powershell.Models.IArchivingRules Commvault.Powershell.Models.ILaptopPlanDetailsInternal.AllowedFeatureArchivingRules { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRules; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).ArchivingRules = value; }

        /// <summary>Internal Acessors for AllowedFeatureEdgeDriveSettings</summary>
        Commvault.Powershell.Models.IEdgeDriveSettings Commvault.Powershell.Models.ILaptopPlanDetailsInternal.AllowedFeatureEdgeDriveSettings { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettings; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettings = value; }

        /// <summary>Internal Acessors for AllowedFeatures</summary>
        Commvault.Powershell.Models.IAllowedFeatures Commvault.Powershell.Models.ILaptopPlanDetailsInternal.AllowedFeatures { get => (this._allowedFeatures = this._allowedFeatures ?? new Commvault.Powershell.Models.AllowedFeatures()); set { {_allowedFeatures = value;} } }

        /// <summary>Internal Acessors for BackupContent</summary>
        Commvault.Powershell.Models.ILaptopPlanBackupContent Commvault.Powershell.Models.ILaptopPlanDetailsInternal.BackupContent { get => (this._backupContent = this._backupContent ?? new Commvault.Powershell.Models.LaptopPlanBackupContent()); set { {_backupContent = value;} } }

        /// <summary>Internal Acessors for EdgeDriveSettingIndexServer</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ILaptopPlanDetailsInternal.EdgeDriveSettingIndexServer { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingIndexServer; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingIndexServer = value; }

        /// <summary>Internal Acessors for General</summary>
        Commvault.Powershell.Models.ILaptopPlanGeneralInfo Commvault.Powershell.Models.ILaptopPlanDetailsInternal.General { get => (this._general = this._general ?? new Commvault.Powershell.Models.LaptopPlanGeneralInfo()); set { {_general = value;} } }

        /// <summary>Internal Acessors for InheritSettingBackupContent</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettingBackupContent { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContent; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BackupContent = value; }

        /// <summary>Internal Acessors for InheritSettingBasePlan</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettingBasePlan { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlan; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).BasePlan = value; }

        /// <summary>Internal Acessors for InheritSettingRetention</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettingRetention { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).Retention; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).Retention = value; }

        /// <summary>Internal Acessors for InheritSettingRpo</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettingRpo { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).Rpo; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).Rpo = value; }

        /// <summary>Internal Acessors for InheritSettingStoragePool</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettingStoragePool { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePool; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePool = value; }

        /// <summary>Internal Acessors for InheritSettings</summary>
        Commvault.Powershell.Models.ILaptopPlanInheritSettings Commvault.Powershell.Models.ILaptopPlanDetailsInternal.InheritSettings { get => (this._inheritSettings = this._inheritSettings ?? new Commvault.Powershell.Models.LaptopPlanInheritSettings()); set { {_inheritSettings = value;} } }

        /// <summary>Internal Acessors for NetworkResources</summary>
        Commvault.Powershell.Models.ILaptopPlanNetworkResources Commvault.Powershell.Models.ILaptopPlanDetailsInternal.NetworkResources { get => (this._networkResources = this._networkResources ?? new Commvault.Powershell.Models.LaptopPlanNetworkResources()); set { {_networkResources = value;} } }

        /// <summary>Internal Acessors for OfflineLaptops</summary>
        Commvault.Powershell.Models.IAutoRetireDevices Commvault.Powershell.Models.ILaptopPlanDetailsInternal.OfflineLaptops { get => (this._offlineLaptops = this._offlineLaptops ?? new Commvault.Powershell.Models.AutoRetireDevices()); set { {_offlineLaptops = value;} } }

        /// <summary>Internal Acessors for OverrideRestrictions</summary>
        Commvault.Powershell.Models.ILaptopPlanOverrideSettings Commvault.Powershell.Models.ILaptopPlanDetailsInternal.OverrideRestrictions { get => (this._overrideRestrictions = this._overrideRestrictions ?? new Commvault.Powershell.Models.LaptopPlanOverrideSettings()); set { {_overrideRestrictions = value;} } }

        /// <summary>Internal Acessors for Plan</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ILaptopPlanDetailsInternal.Plan { get => (this._plan = this._plan ?? new Commvault.Powershell.Models.IdName()); set { {_plan = value;} } }

        /// <summary>Internal Acessors for Retention</summary>
        Commvault.Powershell.Models.ILaptopPlanRetention Commvault.Powershell.Models.ILaptopPlanDetailsInternal.Retention { get => (this._retention = this._retention ?? new Commvault.Powershell.Models.LaptopPlanRetention()); set { {_retention = value;} } }

        /// <summary>Internal Acessors for RetentionFileVersions</summary>
        Commvault.Powershell.Models.ILaptopPlanRetentionFileVersions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.RetentionFileVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersions = value; }

        /// <summary>Internal Acessors for Rpo</summary>
        Commvault.Powershell.Models.ILaptopPlanRpo Commvault.Powershell.Models.ILaptopPlanDetailsInternal.Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.LaptopPlanRpo()); set { {_rpo = value;} } }

        /// <summary>Internal Acessors for RpoSla</summary>
        Commvault.Powershell.Models.ISlaOptions Commvault.Powershell.Models.ILaptopPlanDetailsInternal.RpoSla { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).Sla; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).Sla = value; }

        /// <summary>
        /// Enable auditing which logs the activities based on user interaction like creating, editing, moving, renaming, downloading
        /// or deleting files.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? EdgeDriveSettingAuditDriveOperations { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingAuditDriveOperations; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingAuditDriveOperations = value ?? default(bool); }

        /// <summary>
        /// Maximum number of gigabytes that you can store in the Edge Drive. Value as -1 means no quota is set.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? EdgeDriveSettingEdgeDriveQuota { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingEdgeDriveQuota; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingEdgeDriveQuota = value ?? default(long); }

        /// <summary>
        /// Enables alert notification feature which allows the share user or share owner to subscribe for share notifications when
        /// any activities are performed on the Edge Drive or the Collaborative share. The user can receive the notifications on the
        /// Web Console or as an email notification.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? EdgeDriveSettingNotificationsForShares { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingNotificationsForShares; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).EdgeDriveSettingNotificationsForShares = value ?? default(bool); }

        /// <summary>Custom version rule: Retain daily versions for this many day(s)</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FileVersionDailyVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionDailyVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionDailyVersions = value ?? default(long); }

        /// <summary>
        /// Retain files for this many days. Year(s) or month(s) need to be converted to day(s)
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FileVersionDays { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionDays; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionDays = value ?? default(long); }

        /// <summary>Custom version rule: Retain monthly versions for this many month(s)</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FileVersionMonthlyVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionMonthlyVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionMonthlyVersions = value ?? default(long); }

        /// <summary>
        /// Retain this many file versions. This is considered as default if no file retention rule is specified.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FileVersionVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionVersions = value ?? default(long); }

        /// <summary>Custom version rule: Retain weekly versions for this many week(s)</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FileVersionWeeklyVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionWeeklyVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersionWeeklyVersions = value ?? default(long); }

        /// <summary>Backing field for <see cref="General" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanGeneralInfo _general;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanGeneralInfo General { get => (this._general = this._general ?? new Commvault.Powershell.Models.LaptopPlanGeneralInfo()); set => this._general = value; }

        /// <summary>Number of laptops associated with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? GeneralLaptops { get => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).Laptops; set => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).Laptops = value ?? default(long); }

        /// <summary>
        /// This feature allows laptops to write backup directly to the cloud storage. It helps to optimize scale by reducing server
        /// dependency and extra data hops. Once the feature is enabled, the existing and the newly-added laptops use optimized backups.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralOptimizedForCloudBackups { get => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).OptimizedForCloudBackups; set => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).OptimizedForCloudBackups = value ?? default(bool); }

        /// <summary>
        /// Optimization for cloud backups can only be used when resource pool are configured for atleast one storage.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IStorageResourcePoolMap[] GeneralStorageResourcePoolMap { get => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).StorageResourcePoolMap; set => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).StorageResourcePoolMap = value ?? null /* arrayOf */; }

        /// <summary>Number of users associated with this plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? GeneralUsers { get => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).Users; set => ((Commvault.Powershell.Models.ILaptopPlanGeneralInfoInternal)General).Users = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? IndexServerId { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).IndexServerId; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).IndexServerId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string IndexServerName { get => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).IndexServerName; set => ((Commvault.Powershell.Models.IAllowedFeaturesInternal)AllowedFeatures).IndexServerName = value ?? null; }

        /// <summary>Backing field for <see cref="InheritSettings" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanInheritSettings _inheritSettings;

        /// <summary>LaptopPlanInheritSettings</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanInheritSettings InheritSettings { get => (this._inheritSettings = this._inheritSettings ?? new Commvault.Powershell.Models.LaptopPlanInheritSettings()); set => this._inheritSettings = value; }

        /// <summary>
        /// Maximum kilobits per second to throttle the receiving speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? NetworkResourceThrottleReceive { get => ((Commvault.Powershell.Models.ILaptopPlanNetworkResourcesInternal)NetworkResources).ThrottleReceive; set => ((Commvault.Powershell.Models.ILaptopPlanNetworkResourcesInternal)NetworkResources).ThrottleReceive = value ?? default(long); }

        /// <summary>
        /// Maximum kilobits per second to throttle the emitting speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? NetworkResourceThrottleSend { get => ((Commvault.Powershell.Models.ILaptopPlanNetworkResourcesInternal)NetworkResources).ThrottleSend; set => ((Commvault.Powershell.Models.ILaptopPlanNetworkResourcesInternal)NetworkResources).ThrottleSend = value ?? default(long); }

        /// <summary>Backing field for <see cref="NetworkResources" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanNetworkResources _networkResources;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanNetworkResources NetworkResources { get => (this._networkResources = this._networkResources ?? new Commvault.Powershell.Models.LaptopPlanNetworkResources()); set => this._networkResources = value; }

        /// <summary>
        /// The offline laptops are automatically deleted when the number of days are met. -1 means never.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? OfflineLaptopDeleteAfterDays { get => ((Commvault.Powershell.Models.IAutoRetireDevicesInternal)OfflineLaptops).DeleteAfterDays; set => ((Commvault.Powershell.Models.IAutoRetireDevicesInternal)OfflineLaptops).DeleteAfterDays = value ?? default(long); }

        /// <summary>
        /// The offline laptops are retired when the number of days are met. -1 means never.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? OfflineLaptopRetireAfterDays { get => ((Commvault.Powershell.Models.IAutoRetireDevicesInternal)OfflineLaptops).RetireAfterDays; set => ((Commvault.Powershell.Models.IAutoRetireDevicesInternal)OfflineLaptops).RetireAfterDays = value ?? default(long); }

        /// <summary>Backing field for <see cref="OfflineLaptops" /> property.</summary>
        private Commvault.Powershell.Models.IAutoRetireDevices _offlineLaptops;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IAutoRetireDevices OfflineLaptops { get => (this._offlineLaptops = this._offlineLaptops ?? new Commvault.Powershell.Models.AutoRetireDevices()); set => this._offlineLaptops = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string OverrideRestrictionBackupContent { get => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).BackupContent; set => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).BackupContent = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string OverrideRestrictionRetention { get => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).Retention; set => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).Retention = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string OverrideRestrictionRpo { get => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).Rpo; set => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).Rpo = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string OverrideRestrictionStoragePool { get => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).StoragePool; set => ((Commvault.Powershell.Models.ILaptopPlanOverrideSettingsInternal)OverrideRestrictions).StoragePool = value ?? null; }

        /// <summary>Backing field for <see cref="OverrideRestrictions" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanOverrideSettings _overrideRestrictions;

        /// <summary>
        /// To allow the derived plans that use this plan as the base plan to override the settings, property allowPlanOverride must
        /// be true, and then select one of the options for Storage pool, RPO , Folders to backup, and Retention.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanOverrideSettings OverrideRestrictions { get => (this._overrideRestrictions = this._overrideRestrictions ?? new Commvault.Powershell.Models.LaptopPlanOverrideSettings()); set => this._overrideRestrictions = value; }

        /// <summary>Backing field for <see cref="Permissions" /> property.</summary>
        private Commvault.Powershell.Models.IIdName[] _permissions;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdName[] Permissions { get => this._permissions; set => this._permissions = value; }

        /// <summary>Backing field for <see cref="Plan" /> property.</summary>
        private Commvault.Powershell.Models.IIdName _plan;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IIdName Plan { get => (this._plan = this._plan ?? new Commvault.Powershell.Models.IdName()); set => this._plan = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? PlanId { get => ((Commvault.Powershell.Models.IIdNameInternal)Plan).Id; set => ((Commvault.Powershell.Models.IIdNameInternal)Plan).Id = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string PlanName { get => ((Commvault.Powershell.Models.IIdNameInternal)Plan).Name; set => ((Commvault.Powershell.Models.IIdNameInternal)Plan).Name = value ?? null; }

        /// <summary>Backing field for <see cref="RegionsConfigured" /> property.</summary>
        private bool? _regionsConfigured;

        /// <summary>Specifies if the destinations are associated to regions</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? RegionsConfigured { get => this._regionsConfigured; set => this._regionsConfigured = value; }

        /// <summary>Backing field for <see cref="Retention" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanRetention _retention;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanRetention Retention { get => (this._retention = this._retention ?? new Commvault.Powershell.Models.LaptopPlanRetention()); set => this._retention = value; }

        /// <summary>
        /// Amount of days after deletion of files to keep the items. Giving value as -1 means to retain files indefinitely.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RetentionDeletedItemRetention { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).DeletedItemRetention; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).DeletedItemRetention = value ?? default(long); }

        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RetentionOverridden { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RetentionOverridden; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RetentionOverridden = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RetentionOverrideBase { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RetentionOverrideBase; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RetentionOverrideBase = value ?? null; }

        /// <summary>Backing field for <see cref="Rpo" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanRpo _rpo;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanRpo Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.LaptopPlanRpo()); set => this._rpo = value; }

        /// <summary>
        /// Specify incremental backup frequency in minutes. Backup operation will start as per the time zone of the associated server.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RpoBackupFrequency { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).BackupFrequency; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).BackupFrequency = value ?? default(long); }

        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RpoOverridden { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RpoOverridden; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RpoOverridden = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RpoOverrideBase { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RpoOverrideBase; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).RpoOverrideBase = value ?? null; }

        /// <summary>Time provided in Unix format. Give 0 to reset any existing delay.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaEnableAfterDelay { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaEnableAfterDelay; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaEnableAfterDelay = value ?? default(long); }

        /// <summary>Flag to set to exclude plan from SLA</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? SlaExcludeFromSla { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaExcludeFromSla; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaExcludeFromSla = value ?? default(bool); }

        /// <summary>Reason for exclusion from SLA</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SlaExclusionReason { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaExclusionReason; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaExclusionReason = value ?? null; }

        /// <summary>Tells us from where SLA Period was inherited</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SlaInheritedFrom { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaInheritedFrom; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaInheritedFrom = value ?? null; }

        /// <summary>Inherited SLA Period in Days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaInheritedSlaPeriod { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaInheritedSlaPeriod; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaInheritedSlaPeriod = value ?? default(long); }

        /// <summary>Database log SLA period in Minutes</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaLogSlaMinutes { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaLogSlaMinutes; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaLogSlaMinutes = value ?? default(long); }

        /// <summary>SLA Period in Days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaPeriod { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaPeriod; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaPeriod = value ?? default(long); }

        /// <summary>Flag to set to use System Default Service Level Agreement</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? SlaUseSystemDefaultSla { get => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaUseSystemDefaultSla; set => ((Commvault.Powershell.Models.ILaptopPlanRpoInternal)Rpo).SlaUseSystemDefaultSla = value ?? default(bool); }

        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? StoragePoolOverridden { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePoolOverridden; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePoolOverridden = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string StoragePoolOverrideBase { get => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePoolOverrideBase; set => ((Commvault.Powershell.Models.ILaptopPlanInheritSettingsInternal)InheritSettings).StoragePoolOverrideBase = value ?? null; }

        /// <summary>Creates an new <see cref="LaptopPlanDetails" /> instance.</summary>
        public LaptopPlanDetails()
        {

        }
    }
    public partial interface ILaptopPlanDetails :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>The least RPO in minutes for the plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The least RPO in minutes for the plan",
        SerializedName = @"RPO",
        PossibleTypes = new [] { typeof(long) })]
        long? AdditionalPropertyRpo { get; set; }
        /// <summary>status if plan backups are enabled or disabled</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"status if plan backups are enabled or disabled",
        SerializedName = @"status",
        PossibleTypes = new [] { typeof(string) })]
        string AdditionalPropertyStatus { get; set; }
        /// <summary>Database options should be shown with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Database options should be shown with this plan",
        SerializedName = @"database",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AddonDatabase { get; set; }
        /// <summary>File system options should be shown with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"File system options should be shown with this plan",
        SerializedName = @"fileSystem",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AddonFileSystem { get; set; }
        /// <summary>Index copy options should be shown with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Index copy options should be shown with this plan",
        SerializedName = @"indexCopy",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AddonIndexCopy { get; set; }
        /// <summary>Snap options should be shown with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Snap options should be shown with this plan",
        SerializedName = @"snap",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AddonSnap { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"snapStatus",
        PossibleTypes = new [] { typeof(string) })]
        string AddonSnapStatus { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"alerts",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] Alerts { get; set; }
        /// <summary>Flag to enable overriding of plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to enable overriding of plan",
        SerializedName = @"allowPlanOverride",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AllowPlanOverride { get; set; }
        /// <summary>Flag to enable archiving of laptop data</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to enable archiving of laptop data",
        SerializedName = @"archiving",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AllowedFeatureArchiving { get; set; }
        /// <summary>Flag to enable Data loss protection</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to enable Data loss protection",
        SerializedName = @"DLP",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AllowedFeatureDlp { get; set; }
        /// <summary>Flag to enable Edge Drive</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to enable Edge Drive",
        SerializedName = @"edgeDrive",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AllowedFeatureEdgeDrive { get; set; }
        /// <summary>
        /// After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving
        /// rules
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving rules",
        SerializedName = @"afterArchiving",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingRuleAfterArchiving { get; set; }
        /// <summary>To archive files based on the Read-Only attribute, set to TRUE</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the Read-Only attribute, set to TRUE",
        SerializedName = @"archiveReadOnlyFiles",
        PossibleTypes = new [] { typeof(bool) })]
        bool? ArchivingRuleArchiveReadOnlyFiles { get; set; }
        /// <summary>
        /// To archive files based on the last accessed date of each file within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the last accessed date of each file within the folder, specify the number of days",
        SerializedName = @"fileAccessTimeOlderThan",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileAccessTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the time the files were created within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the time the files were created within the folder, specify the number of days",
        SerializedName = @"fileCreatedTimeOlderThan",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileCreatedTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the last modified date of each file within the folder, specify the number of days
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the last modified date of each file within the folder, specify the number of days",
        SerializedName = @"fileModifiedTimeOlderThan",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileModifiedTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the size of the file, specify the minimum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the size of the file, specify the minimum file size in KB. All files whose size ranges between the minimum and maximum values are archived.",
        SerializedName = @"fileSizeGreaterThan",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileSizeGreaterThan { get; set; }
        /// <summary>
        /// To archive files based on the size of the file, specify the maximum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the size of the file, specify the maximum file size in KB. All files whose size ranges between the minimum and maximum values are archived.",
        SerializedName = @"maximumFileSize",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleMaximumFileSize { get; set; }
        /// <summary>
        /// When free disk space falls below specified amount (in percentage), start cleaning up the disk
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"When free disk space falls below specified amount (in percentage), start cleaning up the disk",
        SerializedName = @"startCleaningIfLessThan",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleStartCleaningIfLessThan { get; set; }
        /// <summary>
        /// When free disk space more than specified amount (in percentage), stop cleaning up the disk
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"When free disk space more than specified amount (in percentage), stop cleaning up the disk",
        SerializedName = @"stopCleaningIfupto",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleStopCleaningIfupto { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"associatedUsersAndUserGroups",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanUserOrGroups) })]
        Commvault.Powershell.Models.IPlanUserOrGroups[] AssociatedUsersAndUserGroups { get; set; }
        /// <summary>
        /// Maximum number of gigabytes that you can store in the File System. Giving value as -1 means infinite file system quota.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Maximum number of gigabytes that you can store in the File System. Giving value as -1 means infinite file system quota.",
        SerializedName = @"fileSystemQuota",
        PossibleTypes = new [] { typeof(long) })]
        long? BackupContentFileSystemQuota { get; set; }
        /// <summary>Paths to exclude for Mac</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to exclude for Mac",
        SerializedName = @"macExcludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentMacExcludedPaths { get; set; }
        /// <summary>Paths to include for Mac</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to include for Mac",
        SerializedName = @"macIncludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentMacIncludedPaths { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? BackupContentOverridden { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"overrideBase",
        PossibleTypes = new [] { typeof(string) })]
        string BackupContentOverrideBase { get; set; }
        /// <summary>Paths to exclude for UNIX</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to exclude for UNIX",
        SerializedName = @"unixExcludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentUnixExcludedPaths { get; set; }
        /// <summary>Paths to include for UNIX</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to include for UNIX",
        SerializedName = @"unixIncludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentUnixIncludedPaths { get; set; }
        /// <summary>Paths to exclude for Windows</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to exclude for Windows",
        SerializedName = @"windowsExcludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentWindowsExcludedPaths { get; set; }
        /// <summary>Paths to include for Windows</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Paths to include for Windows",
        SerializedName = @"windowsIncludedPaths",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupContentWindowsIncludedPaths { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"backupDestinations",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanBackupDestination) })]
        Commvault.Powershell.Models.IPlanBackupDestination[] BackupDestinations { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? BasePlanId { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string BasePlanName { get; set; }
        /// <summary>
        /// Enable auditing which logs the activities based on user interaction like creating, editing, moving, renaming, downloading
        /// or deleting files.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable auditing which logs the activities based on user interaction like creating, editing, moving, renaming, downloading or deleting files.",
        SerializedName = @"auditDriveOperations",
        PossibleTypes = new [] { typeof(bool) })]
        bool? EdgeDriveSettingAuditDriveOperations { get; set; }
        /// <summary>
        /// Maximum number of gigabytes that you can store in the Edge Drive. Value as -1 means no quota is set.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Maximum number of gigabytes that you can store in the Edge Drive. Value as -1 means no quota is set.",
        SerializedName = @"edgeDriveQuota",
        PossibleTypes = new [] { typeof(long) })]
        long? EdgeDriveSettingEdgeDriveQuota { get; set; }
        /// <summary>
        /// Enables alert notification feature which allows the share user or share owner to subscribe for share notifications when
        /// any activities are performed on the Edge Drive or the Collaborative share. The user can receive the notifications on the
        /// Web Console or as an email notification.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enables alert notification feature which allows the share user or share owner to subscribe for share notifications when any activities are performed on the Edge Drive or the Collaborative share. The user can receive the notifications on the Web Console or as an email notification.",
        SerializedName = @"notificationsForShares",
        PossibleTypes = new [] { typeof(bool) })]
        bool? EdgeDriveSettingNotificationsForShares { get; set; }
        /// <summary>Custom version rule: Retain daily versions for this many day(s)</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Custom version rule: Retain daily versions for this many day(s)",
        SerializedName = @"dailyVersions",
        PossibleTypes = new [] { typeof(long) })]
        long? FileVersionDailyVersions { get; set; }
        /// <summary>
        /// Retain files for this many days. Year(s) or month(s) need to be converted to day(s)
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Retain files for this many days. Year(s) or month(s) need to be converted to day(s)",
        SerializedName = @"days",
        PossibleTypes = new [] { typeof(long) })]
        long? FileVersionDays { get; set; }
        /// <summary>Custom version rule: Retain monthly versions for this many month(s)</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Custom version rule: Retain monthly versions for this many month(s)",
        SerializedName = @"monthlyVersions",
        PossibleTypes = new [] { typeof(long) })]
        long? FileVersionMonthlyVersions { get; set; }
        /// <summary>
        /// Retain this many file versions. This is considered as default if no file retention rule is specified.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Retain this many file versions. This is considered as default if no file retention rule is specified.",
        SerializedName = @"versions",
        PossibleTypes = new [] { typeof(long) })]
        long? FileVersionVersions { get; set; }
        /// <summary>Custom version rule: Retain weekly versions for this many week(s)</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Custom version rule: Retain weekly versions for this many week(s)",
        SerializedName = @"weeklyVersions",
        PossibleTypes = new [] { typeof(long) })]
        long? FileVersionWeeklyVersions { get; set; }
        /// <summary>Number of laptops associated with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Number of laptops associated with this plan",
        SerializedName = @"laptops",
        PossibleTypes = new [] { typeof(long) })]
        long? GeneralLaptops { get; set; }
        /// <summary>
        /// This feature allows laptops to write backup directly to the cloud storage. It helps to optimize scale by reducing server
        /// dependency and extra data hops. Once the feature is enabled, the existing and the newly-added laptops use optimized backups.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"This feature allows laptops to write backup directly to the cloud storage. It helps to optimize scale by reducing server dependency and extra data hops. Once the feature is enabled, the existing and the newly-added laptops use optimized backups.",
        SerializedName = @"optimizedForCloudBackups",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralOptimizedForCloudBackups { get; set; }
        /// <summary>
        /// Optimization for cloud backups can only be used when resource pool are configured for atleast one storage.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Optimization for cloud backups can only be used when resource pool are configured for atleast one storage.",
        SerializedName = @"storageResourcePoolMap",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IStorageResourcePoolMap) })]
        Commvault.Powershell.Models.IStorageResourcePoolMap[] GeneralStorageResourcePoolMap { get; set; }
        /// <summary>Number of users associated with this plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Number of users associated with this plan",
        SerializedName = @"users",
        PossibleTypes = new [] { typeof(long) })]
        long? GeneralUsers { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? IndexServerId { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string IndexServerName { get; set; }
        /// <summary>
        /// Maximum kilobits per second to throttle the receiving speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Maximum kilobits per second to throttle the receiving speed of data. Giving value as -1 means infinite throttle send speed i.e. no limit",
        SerializedName = @"throttleReceive",
        PossibleTypes = new [] { typeof(long) })]
        long? NetworkResourceThrottleReceive { get; set; }
        /// <summary>
        /// Maximum kilobits per second to throttle the emitting speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Maximum kilobits per second to throttle the emitting speed of data. Giving value as -1 means infinite throttle send speed i.e. no limit",
        SerializedName = @"throttleSend",
        PossibleTypes = new [] { typeof(long) })]
        long? NetworkResourceThrottleSend { get; set; }
        /// <summary>
        /// The offline laptops are automatically deleted when the number of days are met. -1 means never.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The offline laptops are automatically deleted when the number of days are met. -1 means never.",
        SerializedName = @"deleteAfterDays",
        PossibleTypes = new [] { typeof(long) })]
        long? OfflineLaptopDeleteAfterDays { get; set; }
        /// <summary>
        /// The offline laptops are retired when the number of days are met. -1 means never.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The offline laptops are retired when the number of days are met. -1 means never.",
        SerializedName = @"retireAfterDays",
        PossibleTypes = new [] { typeof(long) })]
        long? OfflineLaptopRetireAfterDays { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"backupContent",
        PossibleTypes = new [] { typeof(string) })]
        string OverrideRestrictionBackupContent { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"retention",
        PossibleTypes = new [] { typeof(string) })]
        string OverrideRestrictionRetention { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"RPO",
        PossibleTypes = new [] { typeof(string) })]
        string OverrideRestrictionRpo { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"storagePool",
        PossibleTypes = new [] { typeof(string) })]
        string OverrideRestrictionStoragePool { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"permissions",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] Permissions { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? PlanId { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string PlanName { get; set; }
        /// <summary>Specifies if the destinations are associated to regions</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specifies if the destinations are associated to regions",
        SerializedName = @"regionsConfigured",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RegionsConfigured { get; set; }
        /// <summary>
        /// Amount of days after deletion of files to keep the items. Giving value as -1 means to retain files indefinitely.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Amount of days after deletion of files to keep the items. Giving value as -1 means to retain files indefinitely.",
        SerializedName = @"deletedItemRetention",
        PossibleTypes = new [] { typeof(long) })]
        long? RetentionDeletedItemRetention { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RetentionOverridden { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"overrideBase",
        PossibleTypes = new [] { typeof(string) })]
        string RetentionOverrideBase { get; set; }
        /// <summary>
        /// Specify incremental backup frequency in minutes. Backup operation will start as per the time zone of the associated server.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specify incremental backup frequency in minutes. Backup operation will start as per the time zone of the associated server.",
        SerializedName = @"backupFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? RpoBackupFrequency { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RpoOverridden { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"overrideBase",
        PossibleTypes = new [] { typeof(string) })]
        string RpoOverrideBase { get; set; }
        /// <summary>Time provided in Unix format. Give 0 to reset any existing delay.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Time provided in Unix format. Give 0 to reset any existing delay.",
        SerializedName = @"enableAfterDelay",
        PossibleTypes = new [] { typeof(long) })]
        long? SlaEnableAfterDelay { get; set; }
        /// <summary>Flag to set to exclude plan from SLA</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to set to exclude plan from SLA",
        SerializedName = @"excludeFromSLA",
        PossibleTypes = new [] { typeof(bool) })]
        bool? SlaExcludeFromSla { get; set; }
        /// <summary>Reason for exclusion from SLA</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Reason for exclusion from SLA",
        SerializedName = @"exclusionReason",
        PossibleTypes = new [] { typeof(string) })]
        string SlaExclusionReason { get; set; }
        /// <summary>Tells us from where SLA Period was inherited</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Tells us from where SLA Period was inherited",
        SerializedName = @"inheritedFrom",
        PossibleTypes = new [] { typeof(string) })]
        string SlaInheritedFrom { get; set; }
        /// <summary>Inherited SLA Period in Days</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Inherited SLA Period in Days",
        SerializedName = @"inheritedSLAPeriod",
        PossibleTypes = new [] { typeof(long) })]
        long? SlaInheritedSlaPeriod { get; set; }
        /// <summary>Database log SLA period in Minutes</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Database log SLA period in Minutes",
        SerializedName = @"logSLAMinutes",
        PossibleTypes = new [] { typeof(long) })]
        long? SlaLogSlaMinutes { get; set; }
        /// <summary>SLA Period in Days</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"SLA Period in Days",
        SerializedName = @"SLAPeriod",
        PossibleTypes = new [] { typeof(long) })]
        long? SlaPeriod { get; set; }
        /// <summary>Flag to set to use System Default Service Level Agreement</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to set to use System Default Service Level Agreement",
        SerializedName = @"useSystemDefaultSLA",
        PossibleTypes = new [] { typeof(bool) })]
        bool? SlaUseSystemDefaultSla { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? StoragePoolOverridden { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"overrideBase",
        PossibleTypes = new [] { typeof(string) })]
        string StoragePoolOverrideBase { get; set; }

    }
    internal partial interface ILaptopPlanDetailsInternal

    {
        Commvault.Powershell.Models.IPlanAdditionalProperties AdditionalProperties { get; set; }

        Commvault.Powershell.Models.IPlanAddons AdditionalPropertyAddons { get; set; }
        /// <summary>The least RPO in minutes for the plan</summary>
        long? AdditionalPropertyRpo { get; set; }
        /// <summary>status if plan backups are enabled or disabled</summary>
        string AdditionalPropertyStatus { get; set; }
        /// <summary>Database options should be shown with this plan</summary>
        bool? AddonDatabase { get; set; }
        /// <summary>File system options should be shown with this plan</summary>
        bool? AddonFileSystem { get; set; }
        /// <summary>Index copy options should be shown with this plan</summary>
        bool? AddonIndexCopy { get; set; }
        /// <summary>Snap options should be shown with this plan</summary>
        bool? AddonSnap { get; set; }

        string AddonSnapStatus { get; set; }

        Commvault.Powershell.Models.IIdName[] Alerts { get; set; }
        /// <summary>Flag to enable overriding of plan</summary>
        bool? AllowPlanOverride { get; set; }
        /// <summary>Flag to enable archiving of laptop data</summary>
        bool? AllowedFeatureArchiving { get; set; }
        /// <summary>These rules are enforced only when archiving is set to true</summary>
        Commvault.Powershell.Models.IArchivingRules AllowedFeatureArchivingRules { get; set; }
        /// <summary>Flag to enable Data loss protection</summary>
        bool? AllowedFeatureDlp { get; set; }
        /// <summary>Flag to enable Edge Drive</summary>
        bool? AllowedFeatureEdgeDrive { get; set; }

        Commvault.Powershell.Models.IEdgeDriveSettings AllowedFeatureEdgeDriveSettings { get; set; }
        /// <summary>Get details about allowed features of a laptop plan</summary>
        Commvault.Powershell.Models.IAllowedFeatures AllowedFeatures { get; set; }
        /// <summary>
        /// After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving
        /// rules
        /// </summary>
        string ArchivingRuleAfterArchiving { get; set; }
        /// <summary>To archive files based on the Read-Only attribute, set to TRUE</summary>
        bool? ArchivingRuleArchiveReadOnlyFiles { get; set; }
        /// <summary>
        /// To archive files based on the last accessed date of each file within the folder, specify the number of days
        /// </summary>
        long? ArchivingRuleFileAccessTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the time the files were created within the folder, specify the number of days
        /// </summary>
        long? ArchivingRuleFileCreatedTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the last modified date of each file within the folder, specify the number of days
        /// </summary>
        long? ArchivingRuleFileModifiedTimeOlderThan { get; set; }
        /// <summary>
        /// To archive files based on the size of the file, specify the minimum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        long? ArchivingRuleFileSizeGreaterThan { get; set; }
        /// <summary>
        /// To archive files based on the size of the file, specify the maximum file size in KB. All files whose size ranges between
        /// the minimum and maximum values are archived.
        /// </summary>
        long? ArchivingRuleMaximumFileSize { get; set; }
        /// <summary>
        /// When free disk space falls below specified amount (in percentage), start cleaning up the disk
        /// </summary>
        long? ArchivingRuleStartCleaningIfLessThan { get; set; }
        /// <summary>
        /// When free disk space more than specified amount (in percentage), stop cleaning up the disk
        /// </summary>
        long? ArchivingRuleStopCleaningIfupto { get; set; }

        Commvault.Powershell.Models.IPlanUserOrGroups[] AssociatedUsersAndUserGroups { get; set; }

        Commvault.Powershell.Models.ILaptopPlanBackupContent BackupContent { get; set; }
        /// <summary>
        /// Maximum number of gigabytes that you can store in the File System. Giving value as -1 means infinite file system quota.
        /// </summary>
        long? BackupContentFileSystemQuota { get; set; }
        /// <summary>Paths to exclude for Mac</summary>
        string[] BackupContentMacExcludedPaths { get; set; }
        /// <summary>Paths to include for Mac</summary>
        string[] BackupContentMacIncludedPaths { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        bool? BackupContentOverridden { get; set; }

        string BackupContentOverrideBase { get; set; }
        /// <summary>Paths to exclude for UNIX</summary>
        string[] BackupContentUnixExcludedPaths { get; set; }
        /// <summary>Paths to include for UNIX</summary>
        string[] BackupContentUnixIncludedPaths { get; set; }
        /// <summary>Paths to exclude for Windows</summary>
        string[] BackupContentWindowsExcludedPaths { get; set; }
        /// <summary>Paths to include for Windows</summary>
        string[] BackupContentWindowsIncludedPaths { get; set; }

        Commvault.Powershell.Models.IPlanBackupDestination[] BackupDestinations { get; set; }

        long? BasePlanId { get; set; }

        string BasePlanName { get; set; }
        /// <summary>
        /// Enable auditing which logs the activities based on user interaction like creating, editing, moving, renaming, downloading
        /// or deleting files.
        /// </summary>
        bool? EdgeDriveSettingAuditDriveOperations { get; set; }
        /// <summary>
        /// Maximum number of gigabytes that you can store in the Edge Drive. Value as -1 means no quota is set.
        /// </summary>
        long? EdgeDriveSettingEdgeDriveQuota { get; set; }

        Commvault.Powershell.Models.IIdName EdgeDriveSettingIndexServer { get; set; }
        /// <summary>
        /// Enables alert notification feature which allows the share user or share owner to subscribe for share notifications when
        /// any activities are performed on the Edge Drive or the Collaborative share. The user can receive the notifications on the
        /// Web Console or as an email notification.
        /// </summary>
        bool? EdgeDriveSettingNotificationsForShares { get; set; }
        /// <summary>Custom version rule: Retain daily versions for this many day(s)</summary>
        long? FileVersionDailyVersions { get; set; }
        /// <summary>
        /// Retain files for this many days. Year(s) or month(s) need to be converted to day(s)
        /// </summary>
        long? FileVersionDays { get; set; }
        /// <summary>Custom version rule: Retain monthly versions for this many month(s)</summary>
        long? FileVersionMonthlyVersions { get; set; }
        /// <summary>
        /// Retain this many file versions. This is considered as default if no file retention rule is specified.
        /// </summary>
        long? FileVersionVersions { get; set; }
        /// <summary>Custom version rule: Retain weekly versions for this many week(s)</summary>
        long? FileVersionWeeklyVersions { get; set; }

        Commvault.Powershell.Models.ILaptopPlanGeneralInfo General { get; set; }
        /// <summary>Number of laptops associated with this plan</summary>
        long? GeneralLaptops { get; set; }
        /// <summary>
        /// This feature allows laptops to write backup directly to the cloud storage. It helps to optimize scale by reducing server
        /// dependency and extra data hops. Once the feature is enabled, the existing and the newly-added laptops use optimized backups.
        /// </summary>
        bool? GeneralOptimizedForCloudBackups { get; set; }
        /// <summary>
        /// Optimization for cloud backups can only be used when resource pool are configured for atleast one storage.
        /// </summary>
        Commvault.Powershell.Models.IStorageResourcePoolMap[] GeneralStorageResourcePoolMap { get; set; }
        /// <summary>Number of users associated with this plan</summary>
        long? GeneralUsers { get; set; }

        long? IndexServerId { get; set; }

        string IndexServerName { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingBackupContent { get; set; }

        Commvault.Powershell.Models.IIdName InheritSettingBasePlan { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingRetention { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingRpo { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingStoragePool { get; set; }
        /// <summary>LaptopPlanInheritSettings</summary>
        Commvault.Powershell.Models.ILaptopPlanInheritSettings InheritSettings { get; set; }
        /// <summary>
        /// Maximum kilobits per second to throttle the receiving speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        long? NetworkResourceThrottleReceive { get; set; }
        /// <summary>
        /// Maximum kilobits per second to throttle the emitting speed of data. Giving value as -1 means infinite throttle send speed
        /// i.e. no limit
        /// </summary>
        long? NetworkResourceThrottleSend { get; set; }

        Commvault.Powershell.Models.ILaptopPlanNetworkResources NetworkResources { get; set; }
        /// <summary>
        /// The offline laptops are automatically deleted when the number of days are met. -1 means never.
        /// </summary>
        long? OfflineLaptopDeleteAfterDays { get; set; }
        /// <summary>
        /// The offline laptops are retired when the number of days are met. -1 means never.
        /// </summary>
        long? OfflineLaptopRetireAfterDays { get; set; }

        Commvault.Powershell.Models.IAutoRetireDevices OfflineLaptops { get; set; }

        string OverrideRestrictionBackupContent { get; set; }

        string OverrideRestrictionRetention { get; set; }

        string OverrideRestrictionRpo { get; set; }

        string OverrideRestrictionStoragePool { get; set; }
        /// <summary>
        /// To allow the derived plans that use this plan as the base plan to override the settings, property allowPlanOverride must
        /// be true, and then select one of the options for Storage pool, RPO , Folders to backup, and Retention.
        /// </summary>
        Commvault.Powershell.Models.ILaptopPlanOverrideSettings OverrideRestrictions { get; set; }

        Commvault.Powershell.Models.IIdName[] Permissions { get; set; }

        Commvault.Powershell.Models.IIdName Plan { get; set; }

        long? PlanId { get; set; }

        string PlanName { get; set; }
        /// <summary>Specifies if the destinations are associated to regions</summary>
        bool? RegionsConfigured { get; set; }

        Commvault.Powershell.Models.ILaptopPlanRetention Retention { get; set; }
        /// <summary>
        /// Amount of days after deletion of files to keep the items. Giving value as -1 means to retain files indefinitely.
        /// </summary>
        long? RetentionDeletedItemRetention { get; set; }
        /// <summary>
        /// Can retain file versions for one of following three cases: days versions custom versions (daily, weekly monthly) If not
        /// defined then, 5 versions are considered the default setting.
        /// </summary>
        Commvault.Powershell.Models.ILaptopPlanRetentionFileVersions RetentionFileVersions { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        bool? RetentionOverridden { get; set; }

        string RetentionOverrideBase { get; set; }

        Commvault.Powershell.Models.ILaptopPlanRpo Rpo { get; set; }
        /// <summary>
        /// Specify incremental backup frequency in minutes. Backup operation will start as per the time zone of the associated server.
        /// </summary>
        long? RpoBackupFrequency { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        bool? RpoOverridden { get; set; }

        string RpoOverrideBase { get; set; }
        /// <summary>
        /// A server meets SLA (Service Level Agreement) when all of its subclients have at least one successful backup during the
        /// number of days specified at the CommCell, Server Group or plan level.
        /// </summary>
        Commvault.Powershell.Models.ISlaOptions RpoSla { get; set; }
        /// <summary>Time provided in Unix format. Give 0 to reset any existing delay.</summary>
        long? SlaEnableAfterDelay { get; set; }
        /// <summary>Flag to set to exclude plan from SLA</summary>
        bool? SlaExcludeFromSla { get; set; }
        /// <summary>Reason for exclusion from SLA</summary>
        string SlaExclusionReason { get; set; }
        /// <summary>Tells us from where SLA Period was inherited</summary>
        string SlaInheritedFrom { get; set; }
        /// <summary>Inherited SLA Period in Days</summary>
        long? SlaInheritedSlaPeriod { get; set; }
        /// <summary>Database log SLA period in Minutes</summary>
        long? SlaLogSlaMinutes { get; set; }
        /// <summary>SLA Period in Days</summary>
        long? SlaPeriod { get; set; }
        /// <summary>Flag to set to use System Default Service Level Agreement</summary>
        bool? SlaUseSystemDefaultSla { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        bool? StoragePoolOverridden { get; set; }

        string StoragePoolOverrideBase { get; set; }

    }
}