generated/api/Models/ArchivePlanDetails.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 ArchivePlanDetails :
        Commvault.Powershell.Models.IArchivePlanDetails,
        Commvault.Powershell.Models.IArchivePlanDetailsInternal
    {

        /// <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>
        /// 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>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? ArchivingRuleOverridden { get => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRuleOverridden; set => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRuleOverridden = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchivingRuleOverrideBase { get => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRuleOverrideBase; set => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRuleOverrideBase = 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="ArchivingServicePolicy" /> property.</summary>
        private Commvault.Powershell.Models.IArchivingServicePolicy _archivingServicePolicy;

        /// <summary>Create Archiving Service Policy Model for Archive Plan</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IArchivingServicePolicy ArchivingServicePolicy { get => (this._archivingServicePolicy = this._archivingServicePolicy ?? new Commvault.Powershell.Models.ArchivingServicePolicy()); set => this._archivingServicePolicy = value; }

        /// <summary>Archiving service policy id</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchivingServicePolicyId { get => ((Commvault.Powershell.Models.IArchivingServicePolicyInternal)ArchivingServicePolicy).PolicyId; set => ((Commvault.Powershell.Models.IArchivingServicePolicyInternal)ArchivingServicePolicy).PolicyId = value ?? null; }

        /// <summary>Tag ids</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ArchivingServicePolicyTags { get => ((Commvault.Powershell.Models.IArchivingServicePolicyInternal)ArchivingServicePolicy).Tags; set => ((Commvault.Powershell.Models.IArchivingServicePolicyInternal)ArchivingServicePolicy).Tags = value ?? null; }

        /// <summary>Backing field for <see cref="AssociatedEntities" /> property.</summary>
        private Commvault.Powershell.Models.IIdNameCount[] _associatedEntities;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdNameCount[] AssociatedEntities { get => this._associatedEntities; set => this._associatedEntities = value; }

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IArchivePlanBackupDestination[] BackupDestinations { get => this._backupDestinations; set => this._backupDestinations = 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? BackupFrequency { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyFrequency; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyFrequency = 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? BackupFrequencyDayOfMonth { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyDayOfMonth = value ?? default(long); }

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

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

        /// <summary>schedule frequency type</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string BackupFrequencyScheduleFrequencyType { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyScheduleFrequencyType; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyScheduleFrequencyType = 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? BackupFrequencyStartTime { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyStartTime; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequencyStartTime = value ?? default(long); }

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

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

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

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

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

        /// <summary>Internal Acessors for ArchivingServicePolicy</summary>
        Commvault.Powershell.Models.IArchivingServicePolicy Commvault.Powershell.Models.IArchivePlanDetailsInternal.ArchivingServicePolicy { get => (this._archivingServicePolicy = this._archivingServicePolicy ?? new Commvault.Powershell.Models.ArchivingServicePolicy()); set { {_archivingServicePolicy = value;} } }

        /// <summary>Internal Acessors for InheritSettingArchivingRules</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions Commvault.Powershell.Models.IArchivePlanDetailsInternal.InheritSettingArchivingRules { get => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRules; set => ((Commvault.Powershell.Models.IArchivePlanInheritSettingsInternal)InheritSettings).ArchivingRules = value; }

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

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

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

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

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

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

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

        /// <summary>Internal Acessors for RpoBackupFrequency</summary>
        Commvault.Powershell.Models.IBackupFrequencyPattern Commvault.Powershell.Models.IArchivePlanDetailsInternal.RpoBackupFrequency { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequency; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupFrequency = value; }

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

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

        /// <summary>ArchivePlanInheritSettings</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IArchivePlanInheritSettings InheritSettings { get => (this._inheritSettings = this._inheritSettings ?? new Commvault.Powershell.Models.ArchivePlanInheritSettings()); set => this._inheritSettings = 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="Permissions" /> property.</summary>
        private Commvault.Powershell.Models.IIdName[] _permissions;

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

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

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

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

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

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

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

        /// <summary>Backing field for <see cref="Rpo" /> property.</summary>
        private Commvault.Powershell.Models.IArchivePlanRpoDetails _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.IArchivePlanRpoDetails Rpo { get => (this._rpo = this._rpo ?? new Commvault.Powershell.Models.ArchivePlanRpoDetails()); set => this._rpo = value; }

        /// <summary>Archive job will run only in the specified archive window</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IDayAndTime[] RpoBackupWindow { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupWindow; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).BackupWindow = value ?? null /* arrayOf */; }

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

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

        /// <summary>Time provided in Unix format. Give 0 to reset any existing delay.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SlaEnableAfterDelay { get => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).SlaEnableAfterDelay; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)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.IArchivePlanRpoDetailsInternal)Rpo).SlaExcludeFromSla; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)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.IArchivePlanRpoDetailsInternal)Rpo).SlaExclusionReason; set => ((Commvault.Powershell.Models.IArchivePlanRpoDetailsInternal)Rpo).SlaExclusionReason = value ?? null; }

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

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

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

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

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

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

        }
    }
    public partial interface IArchivePlanDetails :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <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>
        /// After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving
        /// rules
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"After an archive job, replace the file that meets the archiving rules with a stub or delete the file that meets the archiving rules",
        SerializedName = @"afterArchiving",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingRuleAfterArchiving { get; set; }
        /// <summary>
        /// To archive files based on the size of the file, specify the minimum file size in KB.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"To archive files based on the size of the file, specify the minimum file size in KB.",
        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,
        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,
        Description = @"",
        SerializedName = @"fileTimestampMethod",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingRuleFileTimestampMethod { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? ArchivingRuleOverridden { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"overrideBase",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingRuleOverrideBase { get; set; }
        /// <summary>Archiving service policy id</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Archiving service policy id",
        SerializedName = @"policyId",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingServicePolicyId { get; set; }
        /// <summary>Tag ids</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Tag ids",
        SerializedName = @"tags",
        PossibleTypes = new [] { typeof(string) })]
        string ArchivingServicePolicyTags { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"backupDestinations",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IArchivePlanBackupDestination) })]
        Commvault.Powershell.Models.IArchivePlanBackupDestination[] BackupDestinations { 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,
        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? BackupFrequency { get; set; }
        /// <summary>Day on which to run the schedule, applicable for monthly, yearly</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Day on which to run the schedule, applicable for monthly, yearly",
        SerializedName = @"dayOfMonth",
        PossibleTypes = new [] { typeof(long) })]
        long? BackupFrequencyDayOfMonth { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"monthOfYear",
        PossibleTypes = new [] { typeof(string) })]
        string BackupFrequencyMonthOfYear { get; set; }
        /// <summary>schedule frequency type</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"schedule frequency type",
        SerializedName = @"scheduleFrequencyType",
        PossibleTypes = new [] { typeof(string) })]
        string BackupFrequencyScheduleFrequencyType { get; set; }
        /// <summary>start time of schedule in seconds for daily, weekly, monthly, yearly frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"start time of schedule in seconds for daily, weekly, monthly, yearly frequency",
        SerializedName = @"startTime",
        PossibleTypes = new [] { typeof(long) })]
        long? BackupFrequencyStartTime { get; set; }
        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specific week of a month",
        SerializedName = @"weekOfMonth",
        PossibleTypes = new [] { typeof(string) })]
        string BackupFrequencyWeekOfMonth { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Days of the week for weekly frequency",
        SerializedName = @"weeklyDays",
        PossibleTypes = new [] { typeof(string) })]
        string[] BackupFrequencyWeeklyDays { get; set; }

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

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

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

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string PlanName { get; set; }
        /// <summary>Specifies if the destinations are associated to regions</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specifies if the destinations are associated to regions",
        SerializedName = @"regionsConfigured",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RegionsConfigured { get; set; }
        /// <summary>Archive job will run only in the specified archive window</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Archive job will run only in the specified archive window",
        SerializedName = @"backupWindow",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IDayAndTime) })]
        Commvault.Powershell.Models.IDayAndTime[] RpoBackupWindow { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag telling if this setting is currently being overriden",
        SerializedName = @"overridden",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RpoOverridden { get; set; }

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

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

    }
    internal partial interface IArchivePlanDetailsInternal

    {
        /// <summary>Flag to enable overriding of plan</summary>
        bool? AllowPlanOverride { 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>Flag telling if this setting is currently being overriden</summary>
        bool? ArchivingRuleOverridden { get; set; }

        string ArchivingRuleOverrideBase { get; set; }
        /// <summary>Files which meet both time stamp and file size rules will be archived</summary>
        Commvault.Powershell.Models.IArchivePlanArchivingRules ArchivingRules { get; set; }
        /// <summary>Create Archiving Service Policy Model for Archive Plan</summary>
        Commvault.Powershell.Models.IArchivingServicePolicy ArchivingServicePolicy { get; set; }
        /// <summary>Archiving service policy id</summary>
        string ArchivingServicePolicyId { get; set; }
        /// <summary>Tag ids</summary>
        string ArchivingServicePolicyTags { get; set; }

        Commvault.Powershell.Models.IIdNameCount[] AssociatedEntities { get; set; }

        Commvault.Powershell.Models.IArchivePlanBackupDestination[] BackupDestinations { 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? BackupFrequency { get; set; }
        /// <summary>Day on which to run the schedule, applicable for monthly, yearly</summary>
        long? BackupFrequencyDayOfMonth { get; set; }

        string BackupFrequencyDayOfWeek { get; set; }

        string BackupFrequencyMonthOfYear { get; set; }
        /// <summary>schedule frequency type</summary>
        string BackupFrequencyScheduleFrequencyType { get; set; }
        /// <summary>start time of schedule in seconds for daily, weekly, monthly, yearly frequency</summary>
        long? BackupFrequencyStartTime { get; set; }
        /// <summary>Specific week of a month</summary>
        string BackupFrequencyWeekOfMonth { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        string[] BackupFrequencyWeeklyDays { get; set; }

        long? BasePlanId { get; set; }

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

        Commvault.Powershell.Models.IIdName InheritSettingBasePlan { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingRpo { get; set; }
        /// <summary>PlanOverridenOptions</summary>
        Commvault.Powershell.Models.IPlanOverridenOptions InheritSettingStoragePool { get; set; }
        /// <summary>ArchivePlanInheritSettings</summary>
        Commvault.Powershell.Models.IArchivePlanInheritSettings InheritSettings { 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[] Permissions { get; set; }

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

        long? PlanId { get; set; }

        string PlanName { get; set; }
        /// <summary>Specifies if the destinations are associated to regions</summary>
        bool? RegionsConfigured { get; set; }
        /// <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.IArchivePlanRpoDetails Rpo { get; set; }
        /// <summary>Used to describe the frequency of backup</summary>
        Commvault.Powershell.Models.IBackupFrequencyPattern RpoBackupFrequency { get; set; }
        /// <summary>Archive job will run only in the specified archive window</summary>
        Commvault.Powershell.Models.IDayAndTime[] RpoBackupWindow { get; set; }
        /// <summary>Flag telling if this setting is currently being overriden</summary>
        bool? RpoOverridden { get; set; }

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

        string StoragePoolOverrideBase { get; set; }

    }
}