generated/api/Models/ArchivePlan.cs

// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.10.2, generator: @autorest/powershell@4.0.708)
// 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 ArchivePlan :
        Commvault.Powershell.Models.IArchivePlan,
        Commvault.Powershell.Models.IArchivePlanInternal
    {

        /// <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>
        /// Frequency of the schedule based on schedule frequency type eg. for Hours, value 2 is 2 hours, for Minutes, 30 is 30 minutes,
        /// for Daily, 2 is 2 days. for Monthly 2 is it repeats every 2 months
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchiveFrequency { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyFrequency; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyFrequency = value ?? default(long); }

        /// <summary>Day on which to run the schedule, applicable for monthly, yearly</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchiveFrequencyDayOfMonth { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyDayOfMonth = value ?? default(long); }

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

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

        /// <summary>schedule frequency type</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchiveFrequencyScheduleFrequencyType { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyScheduleFrequencyType; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyScheduleFrequencyType = value ?? null; }

        /// <summary>start time of schedule in seconds for daily, weekly, monthly, yearly frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchiveFrequencyStartTime { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyStartTime; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyStartTime = value ?? default(long); }

        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchiveFrequencyWeekOfMonth { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyWeekOfMonth; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyWeekOfMonth = value ?? null; }

        /// <summary>Days of the week for weekly frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public System.Collections.Generic.List<string> ArchiveFrequencyWeeklyDays { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyWeeklyDays; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequencyWeeklyDays = value ?? null /* arrayOf */; }

        /// <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.IArchivePlanArchivingRulesInternal)ArchivingRules).AfterArchiving; set => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).AfterArchiving = value ?? null; }

        /// <summary>
        /// To archive files based on the size of the file, specify the minimum file size in KB.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileSize { get => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileSize; set => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileSize = value ?? default(long); }

        /// <summary>
        /// To archive files based on the last accessed or modified date of each file within the folder, specify the number of days.
        /// Should be supplied with fileTimestampMethod.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ArchivingRuleFileTimestamp { get => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileTimestamp; set => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileTimestamp = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchivingRuleFileTimestampMethod { get => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileTimestampMethod; set => ((Commvault.Powershell.Models.IArchivePlanArchivingRulesInternal)ArchivingRules).FileTimestampMethod = value ?? null; }

        /// <summary>Backing field for <see cref="ArchivingRules" /> property.</summary>
        private Commvault.Powershell.Models.IArchivePlanArchivingRules _archivingRules;

        /// <summary>Files which meet both time stamp and file size rules will be archived</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IArchivePlanArchivingRules ArchivingRules { get => (this._archivingRules = this._archivingRules ?? new Commvault.Powershell.Models.ArchivePlanArchivingRules()); set => this._archivingRules = value; }

        /// <summary>Backing field for <see cref="BackupDestinations" /> property.</summary>
        private System.Collections.Generic.List<Commvault.Powershell.Models.ICreateArchivePlanBackupDestination> _backupDestinations;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public System.Collections.Generic.List<Commvault.Powershell.Models.ICreateArchivePlanBackupDestination> BackupDestinations { get => this._backupDestinations; set => this._backupDestinations = value; }

        /// <summary>Internal Acessors for ArchivingRules</summary>
        Commvault.Powershell.Models.IArchivePlanArchivingRules Commvault.Powershell.Models.IArchivePlanInternal.ArchivingRules { get => (this._archivingRules = this._archivingRules ?? new Commvault.Powershell.Models.ArchivePlanArchivingRules()); set { {_archivingRules = value;} } }

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

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

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

        /// <summary>Internal Acessors for RpoArchiveFrequency</summary>
        Commvault.Powershell.Models.IBackupFrequencyPattern Commvault.Powershell.Models.IArchivePlanInternal.RpoArchiveFrequency { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequency; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveFrequency = value; }

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

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

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

        /// <summary>Backing field for <see cref="OverrideRestrictions" /> property.</summary>
        private Commvault.Powershell.Models.IArchivePlanOverrideSettings _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 and Archiving rules.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IArchivePlanOverrideSettings OverrideRestrictions { get => (this._overrideRestrictions = this._overrideRestrictions ?? new Commvault.Powershell.Models.ArchivePlanOverrideSettings()); 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; }

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

        /// <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.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IArchivePlanRpo Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.ArchivePlanRpo()); set => this._rpo = value; }

        /// <summary>Archive job will run only in the specified archive window</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public System.Collections.Generic.List<Commvault.Powershell.Models.IDayAndTime> RpoArchiveWindow { get => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveWindow; set => ((Commvault.Powershell.Models.IArchivePlanRpoInternal)Rpo).ArchiveWindow = value ?? null /* arrayOf */; }

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

        }
    }
    public partial interface IArchivePlan :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>Flag to enable overriding of plan. Plan cannot be overriden by default.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Flag to enable overriding of plan. Plan cannot be overriden by default.",
        SerializedName = @"allowPlanOverride",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AllowPlanOverride { get; set; }
        /// <summary>
        /// Frequency of the schedule based on schedule frequency type eg. for Hours, value 2 is 2 hours, for Minutes, 30 is 30 minutes,
        /// for Daily, 2 is 2 days. for Monthly 2 is it repeats every 2 months
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Frequency of the schedule based on schedule frequency type eg. for Hours, value 2 is 2 hours, for Minutes, 30 is 30 minutes, for Daily, 2 is 2 days. for Monthly 2 is it repeats every 2 months",
        SerializedName = @"frequency",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchiveFrequency { get; set; }
        /// <summary>Day on which to run the schedule, applicable for monthly, yearly</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Day on which to run the schedule, applicable for monthly, yearly",
        SerializedName = @"dayOfMonth",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchiveFrequencyDayOfMonth { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"",
        SerializedName = @"monthOfYear",
        PossibleTypes = new [] { typeof(string) })]
        string ArchiveFrequencyMonthOfYear { get; set; }
        /// <summary>schedule frequency type</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"schedule frequency type",
        SerializedName = @"scheduleFrequencyType",
        PossibleTypes = new [] { typeof(string) })]
        string ArchiveFrequencyScheduleFrequencyType { get; set; }
        /// <summary>start time of schedule in seconds for daily, weekly, monthly, yearly frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"start time of schedule in seconds for daily, weekly, monthly, yearly frequency",
        SerializedName = @"startTime",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchiveFrequencyStartTime { get; set; }
        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Specific week of a month",
        SerializedName = @"weekOfMonth",
        PossibleTypes = new [] { typeof(string) })]
        string ArchiveFrequencyWeekOfMonth { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Days of the week for weekly frequency",
        SerializedName = @"weeklyDays",
        PossibleTypes = new [] { typeof(string) })]
        System.Collections.Generic.List<string> ArchiveFrequencyWeeklyDays { 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,
        Read = true,
        Create = true,
        Update = true,
        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 size of the file, specify the minimum file size in KB.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"To archive files based on the size of the file, specify the minimum file size in KB.",
        SerializedName = @"fileSize",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileSize { get; set; }
        /// <summary>
        /// To archive files based on the last accessed or modified date of each file within the folder, specify the number of days.
        /// Should be supplied with fileTimestampMethod.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"To archive files based on the last accessed or modified date of each file within the folder, specify the number of days. Should be supplied with fileTimestampMethod.",
        SerializedName = @"fileTimestamp",
        PossibleTypes = new [] { typeof(long) })]
        long? ArchivingRuleFileTimestamp { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"",
        SerializedName = @"backupDestinations",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.ICreateArchivePlanBackupDestination) })]
        System.Collections.Generic.List<Commvault.Powershell.Models.ICreateArchivePlanBackupDestination> BackupDestinations { get; set; }

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

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = true,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"",
        SerializedName = @"planName",
        PossibleTypes = new [] { typeof(string) })]
        string PlanName { get; set; }
        /// <summary>Archive job will run only in the specified archive window</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Read = true,
        Create = true,
        Update = true,
        Description = @"Archive job will run only in the specified archive window",
        SerializedName = @"archiveWindow",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IDayAndTime) })]
        System.Collections.Generic.List<Commvault.Powershell.Models.IDayAndTime> RpoArchiveWindow { get; set; }

    }
    internal partial interface IArchivePlanInternal

    {
        /// <summary>Flag to enable overriding of plan. Plan cannot be overriden by default.</summary>
        bool? AllowPlanOverride { get; set; }
        /// <summary>
        /// Frequency of the schedule based on schedule frequency type eg. for Hours, value 2 is 2 hours, for Minutes, 30 is 30 minutes,
        /// for Daily, 2 is 2 days. for Monthly 2 is it repeats every 2 months
        /// </summary>
        long? ArchiveFrequency { get; set; }
        /// <summary>Day on which to run the schedule, applicable for monthly, yearly</summary>
        long? ArchiveFrequencyDayOfMonth { get; set; }

        string ArchiveFrequencyDayOfWeek { get; set; }

        string ArchiveFrequencyMonthOfYear { get; set; }
        /// <summary>schedule frequency type</summary>
        string ArchiveFrequencyScheduleFrequencyType { get; set; }
        /// <summary>start time of schedule in seconds for daily, weekly, monthly, yearly frequency</summary>
        long? ArchiveFrequencyStartTime { get; set; }
        /// <summary>Specific week of a month</summary>
        string ArchiveFrequencyWeekOfMonth { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        System.Collections.Generic.List<string> ArchiveFrequencyWeeklyDays { 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 size of the file, specify the minimum file size in KB.
        /// </summary>
        long? ArchivingRuleFileSize { get; set; }
        /// <summary>
        /// To archive files based on the last accessed or modified date of each file within the folder, specify the number of days.
        /// Should be supplied with fileTimestampMethod.
        /// </summary>
        long? ArchivingRuleFileTimestamp { get; set; }

        string ArchivingRuleFileTimestampMethod { get; set; }
        /// <summary>Files which meet both time stamp and file size rules will be archived</summary>
        Commvault.Powershell.Models.IArchivePlanArchivingRules ArchivingRules { get; set; }

        System.Collections.Generic.List<Commvault.Powershell.Models.ICreateArchivePlanBackupDestination> BackupDestinations { get; set; }

        string OverrideRestrictionArchivingRules { 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 and Archiving rules.
        /// </summary>
        Commvault.Powershell.Models.IArchivePlanOverrideSettings OverrideRestrictions { get; set; }

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

        long? ParentPlanId { get; set; }

        string ParentPlanName { get; set; }

        string PlanName { 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.
        /// </summary>
        Commvault.Powershell.Models.IArchivePlanRpo Rpo { get; set; }
        /// <summary>Used to describe the frequency of backup</summary>
        Commvault.Powershell.Models.IBackupFrequencyPattern RpoArchiveFrequency { get; set; }
        /// <summary>Archive job will run only in the specified archive window</summary>
        System.Collections.Generic.List<Commvault.Powershell.Models.IDayAndTime> RpoArchiveWindow { get; set; }

    }
}