generated/api/Models/LaptopPlan.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;

    /// <summary>Create a new Laptop Plan</summary>
    public partial class LaptopPlan :
        Commvault.Powershell.Models.ILaptopPlan,
        Commvault.Powershell.Models.ILaptopPlanInternal
    {

        /// <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. Plan cannot be overriden by default.</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="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.ILaptopPlanInternal.BackupContent { get => (this._backupContent = this._backupContent ?? new Commvault.Powershell.Models.LaptopPlanBackupContent()); set { {_backupContent = value;} } }

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

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

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

        /// <summary>Internal Acessors for Retention</summary>
        Commvault.Powershell.Models.ILaptopPlanRetention Commvault.Powershell.Models.ILaptopPlanInternal.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.ILaptopPlanInternal.RetentionFileVersions { get => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersions; set => ((Commvault.Powershell.Models.ILaptopPlanRetentionInternal)Retention).FileVersions = value; }

        /// <summary>Internal Acessors for StorageAndSchedule</summary>
        Commvault.Powershell.Models.ILaptopPlanStorageAndSchedule Commvault.Powershell.Models.ILaptopPlanInternal.StorageAndSchedule { get => (this._storageAndSchedule = this._storageAndSchedule ?? new Commvault.Powershell.Models.LaptopPlanStorageAndSchedule()); set { {_storageAndSchedule = value;} } }

        /// <summary>Internal Acessors for StorageAndSchedulePrimaryStorage</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ILaptopPlanInternal.StorageAndSchedulePrimaryStorage { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorage; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorage = value; }

        /// <summary>Internal Acessors for StorageAndScheduleSecondaryStorage</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ILaptopPlanInternal.StorageAndScheduleSecondaryStorage { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorage; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorage = 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="InviteUsersOrGroups" /> property.</summary>
        private Commvault.Powershell.Models.IPlanUserOrGroups[] _inviteUsersOrGroups;

        /// <summary>
        /// The users and user groups who should install the end-user Endpoint package on their devices.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IPlanUserOrGroups[] InviteUsersOrGroups { get => this._inviteUsersOrGroups; set => this._inviteUsersOrGroups = 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; }

        [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="ParentPlan" /> property.</summary>
        private Commvault.Powershell.Models.IIdName _parentPlan;

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

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

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

        /// <summary>Backing field for <see cref="PlanName" /> property.</summary>
        private string _planName;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string PlanName { get => this._planName; set => this._planName = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? PrimaryStorageId { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorageId; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorageId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string PrimaryStorageName { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorageName; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).PrimaryStorageName = 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); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SecondaryStorageId { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorageId; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorageId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SecondaryStorageName { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorageName; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).SecondaryStorageName = value ?? null; }

        /// <summary>Backing field for <see cref="StorageAndSchedule" /> property.</summary>
        private Commvault.Powershell.Models.ILaptopPlanStorageAndSchedule _storageAndSchedule;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ILaptopPlanStorageAndSchedule StorageAndSchedule { get => (this._storageAndSchedule = this._storageAndSchedule ?? new Commvault.Powershell.Models.LaptopPlanStorageAndSchedule()); set => this._storageAndSchedule = value; }

        /// <summary>
        /// Recovery Point Objective (RPO) is the maximum amount of time that data can be lost during a service disruption. Your RPO
        /// determines the frequency of your backup jobs. Your RPO is met through automatic options. The time specified in minutes
        /// here is your RPO if none of the automatic options are met. Default is 480 minutes (8 hours).
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? StorageAndScheduleBackupFrequency { get => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).BackupFrequency; set => ((Commvault.Powershell.Models.ILaptopPlanStorageAndScheduleInternal)StorageAndSchedule).BackupFrequency = value ?? default(long); }

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

        }
    }
    /// Create a new Laptop Plan
    public partial interface ILaptopPlan :
        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. Plan cannot be overriden by default.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to enable overriding of plan. Plan cannot be overriden by default.",
        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; }
        /// <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>
        /// The users and user groups who should install the end-user Endpoint package on their devices.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The users and user groups who should install the end-user Endpoint package on their devices.",
        SerializedName = @"inviteUsersOrGroups",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanUserOrGroups) })]
        Commvault.Powershell.Models.IPlanUserOrGroups[] InviteUsersOrGroups { 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; }

        [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? ParentPlanId { get; set; }

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

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SecondaryStorageName { get; set; }
        /// <summary>
        /// Recovery Point Objective (RPO) is the maximum amount of time that data can be lost during a service disruption. Your RPO
        /// determines the frequency of your backup jobs. Your RPO is met through automatic options. The time specified in minutes
        /// here is your RPO if none of the automatic options are met. Default is 480 minutes (8 hours).
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Recovery Point Objective (RPO) is the maximum amount of time that data can be lost during a service disruption. Your RPO determines the frequency of your backup jobs. Your RPO is met through automatic options. The time specified in minutes here is your RPO if none of the automatic options are met. Default is 480 minutes (8 hours).",
        SerializedName = @"backupFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? StorageAndScheduleBackupFrequency { get; set; }

    }
    /// Create a new Laptop Plan
    internal partial interface ILaptopPlanInternal

    {
        Commvault.Powershell.Models.IIdName[] Alerts { get; set; }
        /// <summary>Flag to enable overriding of plan. Plan cannot be overriden by default.</summary>
        bool? AllowPlanOverride { get; set; }
        /// <summary>Create/modify allowed features of laptop plan</summary>
        Commvault.Powershell.Models.ILaptopPlanAllowedFeatures AllowedFeatures { 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; }
        /// <summary>
        /// The users and user groups who should install the end-user Endpoint package on their devices.
        /// </summary>
        Commvault.Powershell.Models.IPlanUserOrGroups[] InviteUsersOrGroups { 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; }

        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 ParentPlan { get; set; }

        long? ParentPlanId { get; set; }

        string ParentPlanName { get; set; }

        string PlanName { get; set; }

        long? PrimaryStorageId { get; set; }

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

        long? SecondaryStorageId { get; set; }

        string SecondaryStorageName { get; set; }

        Commvault.Powershell.Models.ILaptopPlanStorageAndSchedule StorageAndSchedule { get; set; }
        /// <summary>
        /// Recovery Point Objective (RPO) is the maximum amount of time that data can be lost during a service disruption. Your RPO
        /// determines the frequency of your backup jobs. Your RPO is met through automatic options. The time specified in minutes
        /// here is your RPO if none of the automatic options are met. Default is 480 minutes (8 hours).
        /// </summary>
        long? StorageAndScheduleBackupFrequency { get; set; }

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

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

    }
}