generated/api/Models/UpdateLaptopPlan.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 UpdateLaptopPlan :
        Commvault.Powershell.Models.IUpdateLaptopPlan,
        Commvault.Powershell.Models.IUpdateLaptopPlanInternal
    {

        /// <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>Backing field for <see cref="AllowedFeatures" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanAllowedFeatures _allowedFeatures;

        /// <summary>Create/modify allowed features of laptop plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.ILaptopPlanAllowedFeatures AllowedFeatures { get => (this._allowedFeatures = this._allowedFeatures ?? new Commvault.Powershell.Models.LaptopPlanAllowedFeatures()); set => this._allowedFeatures = value; }

        /// <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>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>Internal Acessors for BackupContent</summary>
        Commvault.Powershell.Models.ILaptopPlanBackupContent Commvault.Powershell.Models.IUpdateLaptopPlanInternal.BackupContent { get => (this._backupContent = this._backupContent ?? new Commvault.Powershell.Models.LaptopPlanBackupContent()); set { {_backupContent = value;} } }

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

        /// <summary>Internal Acessors for NetworkResources</summary>
        Commvault.Powershell.Models.ILaptopPlanNetworkResources Commvault.Powershell.Models.IUpdateLaptopPlanInternal.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.IUpdateLaptopPlanInternal.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.IUpdateLaptopPlanInternal.OverrideRestrictions { get => (this._overrideRestrictions = this._overrideRestrictions ?? new Commvault.Powershell.Models.LaptopPlanOverrideSettings()); set { {_overrideRestrictions = value;} } }

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

        /// <summary>Internal Acessors for Retention</summary>
        Commvault.Powershell.Models.ILaptopPlanRetention Commvault.Powershell.Models.IUpdateLaptopPlanInternal.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.IUpdateLaptopPlanInternal.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.ILaptopPlanUpdateRpo Commvault.Powershell.Models.IUpdateLaptopPlanInternal.Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.LaptopPlanUpdateRpo()); set { {_rpo = value;} } }

        /// <summary>Internal Acessors for RpoSla</summary>
        Commvault.Powershell.Models.ISlaUpdateOptions Commvault.Powershell.Models.IUpdateLaptopPlanInternal.RpoSla { get => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).Sla; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).Sla = value; }

        /// <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.ILaptopPlanUpdateGeneralInfo _general;

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

        /// <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.ILaptopPlanUpdateGeneralInfoInternal)General).OptimizedForCloudBackups; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateGeneralInfoInternal)General).OptimizedForCloudBackups = value ?? default(bool); }

        /// <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>Backing field for <see cref="NewName" /> property.</summary>
        private string _newName;

        /// <summary>New plan name to update</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string NewName { get => this._newName; set => this._newName = 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="RegionToConfigure" /> property.</summary>
        private Commvault.Powershell.Models.IIdName _regionToConfigure;

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

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

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

        /// <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>Backing field for <see cref="Rpo" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanUpdateRpo _rpo;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanUpdateRpo Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.LaptopPlanUpdateRpo()); 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.ILaptopPlanUpdateRpoInternal)Rpo).BackupFrequency; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).BackupFrequency = value ?? default(long); }

        /// <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.ILaptopPlanUpdateRpoInternal)Rpo).SlaEnableAfterDelay; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)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.ILaptopPlanUpdateRpoInternal)Rpo).SlaExcludeFromSla; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)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.ILaptopPlanUpdateRpoInternal)Rpo).SlaExclusionReason; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).SlaExclusionReason = value ?? null; }

        /// <summary>Database log SLA period in Minutes</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaLogSlaMinutes { get => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).SlaLogSlaMinutes; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)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.ILaptopPlanUpdateRpoInternal)Rpo).SlaPeriod; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)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.ILaptopPlanUpdateRpoInternal)Rpo).SlaUseSystemDefaultSla; set => ((Commvault.Powershell.Models.ILaptopPlanUpdateRpoInternal)Rpo).SlaUseSystemDefaultSla = value ?? default(bool); }

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

        }
    }
    public partial interface IUpdateLaptopPlan :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        [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>Create/modify allowed features of laptop plan</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Create/modify allowed features of laptop plan",
        SerializedName = @"allowedFeatures",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.ILaptopPlanAllowedFeatures) })]
        Commvault.Powershell.Models.ILaptopPlanAllowedFeatures AllowedFeatures { 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>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; }
        /// <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>
        /// 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>
        /// 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>New plan name to update</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"New plan name to update",
        SerializedName = @"newName",
        PossibleTypes = new [] { typeof(string) })]
        string NewName { 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 = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? RegionToConfigureId { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string RegionToConfigureName { 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>
        /// 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>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>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; }

    }
    internal partial interface IUpdateLaptopPlanInternal

    {
        Commvault.Powershell.Models.IIdName[] Alerts { get; set; }
        /// <summary>Flag to enable overriding of plan</summary>
        bool? AllowPlanOverride { get; set; }
        /// <summary>Create/modify allowed features of laptop plan</summary>
        Commvault.Powershell.Models.ILaptopPlanAllowedFeatures AllowedFeatures { 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>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; }
        /// <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.ILaptopPlanUpdateGeneralInfo General { 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>
        /// 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>New plan name to update</summary>
        string NewName { 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 RegionToConfigure { get; set; }

        long? RegionToConfigureId { get; set; }

        string RegionToConfigureName { 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; }

        Commvault.Powershell.Models.ILaptopPlanUpdateRpo 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>
        /// 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.ISlaUpdateOptions 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>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; }

    }
}