generated/api/Models/PlanBackupDestinationDetails.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 PlanBackupDestinationDetails :
        Commvault.Powershell.Models.IPlanBackupDestinationDetails,
        Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal
    {

        /// <summary>Backing field for <see cref="BackupType" /> property.</summary>
        private Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfo _backupType;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfo BackupType { get => (this._backupType = this._backupType ?? new Commvault.Powershell.Models.PlanBackupDestinationBackupTypeInfo()); set => this._backupType = value; }

        /// <summary>
        /// Tells what start date, backup types should be copied from. The date is provided in unix time format in number of seconds.
        /// -1 means initial backup date.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? BackupTypeBackupTypesCopiedFrom { get => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).BackupTypesCopiedFrom; set => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).BackupTypesCopiedFrom = value ?? default(long); }

        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string BackupTypeBackupTypesToCopy { get => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).BackupTypesToCopy; set => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).BackupTypesToCopy = value ?? null; }

        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string BackupTypeFullBackupTypesToCopy { get => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).FullBackupTypesToCopy; set => ((Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfoInternal)BackupType).FullBackupTypesToCopy = value ?? null; }

        /// <summary>Internal Acessors for BackupType</summary>
        Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfo Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.BackupType { get => (this._backupType = this._backupType ?? new Commvault.Powershell.Models.PlanBackupDestinationBackupTypeInfo()); set { {_backupType = value;} } }

        /// <summary>Internal Acessors for ExtendedRetentionRuleFirstExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.ExtendedRetentionRuleFirstExtendedRetentionRule { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleFirstExtendedRetentionRule; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleFirstExtendedRetentionRule = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRuleSecondExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.ExtendedRetentionRuleSecondExtendedRetentionRule { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleSecondExtendedRetentionRule; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleSecondExtendedRetentionRule = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRuleThirdExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.ExtendedRetentionRuleThirdExtendedRetentionRule { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleThirdExtendedRetentionRule; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRuleThirdExtendedRetentionRule = value; }

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

        /// <summary>Internal Acessors for GeneralSource</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.GeneralSource { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Source; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Source = value; }

        /// <summary>Internal Acessors for GeneralStorage</summary>
        Commvault.Powershell.Models.IStoragePool Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.GeneralStorage { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Storage; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Storage = value; }

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

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

        /// <summary>Internal Acessors for Region</summary>
        Commvault.Powershell.Models.IIdNameDisplayName Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.Region { get => (this._region = this._region ?? new Commvault.Powershell.Models.IdNameDisplayName()); set { {_region = value;} } }

        /// <summary>Internal Acessors for RetentionRuleExtendedRetentionRules</summary>
        Commvault.Powershell.Models.IExtendedRetentionRules Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.RetentionRuleExtendedRetentionRules { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRules; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ExtendedRetentionRules = value; }

        /// <summary>Internal Acessors for RetentionRules</summary>
        Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfo Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.RetentionRules { get => (this._retentionRules = this._retentionRules ?? new Commvault.Powershell.Models.PlanBackupDestinationRetentionRuleInfo()); set { {_retentionRules = value;} } }

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

        /// <summary>
        /// Flag to specify whether backup destination is configurable (True when it belongs to a base plan or a derived plan with
        /// overriden storage pool)
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? Configurable { get => this._configurable; set => this._configurable = value; }

        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? FirstExtendedRetentionRuleIsInfiniteRetention { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleIsInfiniteRetention = value ?? default(bool); }

        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? FirstExtendedRetentionRuleRetentionPeriodDays { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleRetentionPeriodDays = value ?? default(long); }

        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string FirstExtendedRetentionRuleType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FirstExtendedRetentionRuleType = value ?? null; }

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

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

        /// <summary>Order of backup destinaion copy created in storage policy</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? GeneralCopyPrecedence { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).CopyPrecedence; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).CopyPrecedence = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralCopyType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).CopyType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).CopyType = value ?? null; }

        /// <summary>Is this an active backup destination?</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralIsActive { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsActive; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsActive = value ?? default(bool); }

        /// <summary>Is this a default backup destination?</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralIsDefault { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsDefault; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsDefault = value ?? default(bool); }

        /// <summary>Is this a mirror copy?</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralIsMirrorCopy { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsMirrorCopy; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsMirrorCopy = value ?? default(bool); }

        /// <summary>Is this a snap copy?</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralIsSnapCopy { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsSnapCopy; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).IsSnapCopy = value ?? default(bool); }

        /// <summary>
        /// Only for snap copy. Tells if the snap copy supports SVM Mapping to NetApp cloud targets only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralNetAppCloudTarget { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).NetAppCloudTarget; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).NetAppCloudTarget = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralSnapCopyType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SnapCopyType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SnapCopyType = value ?? null; }

        /// <summary>StorageType</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralStorageType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageType = value ?? null; }

        /// <summary>Backing field for <see cref="Mappings" /> property.</summary>
        private Commvault.Powershell.Models.ISnapshotCopyMapping[] _mappings;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.ISnapshotCopyMapping[] Mappings { get => this._mappings; set => this._mappings = 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; }

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

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

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

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

        [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="Region" /> property.</summary>
        private Commvault.Powershell.Models.IIdNameDisplayName _region;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IIdNameDisplayName Region { get => (this._region = this._region ?? new Commvault.Powershell.Models.IdNameDisplayName()); set => this._region = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RegionDisplayName { get => ((Commvault.Powershell.Models.IIdNameDisplayNameInternal)Region).DisplayName; set => ((Commvault.Powershell.Models.IIdNameDisplayNameInternal)Region).DisplayName = value ?? null; }

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

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

        /// <summary>Tells if this copy has data aging enabled</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RetentionRuleEnableDataAging { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).EnableDataAging; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).EnableDataAging = value ?? default(bool); }

        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RetentionRuleFullBackupTypesToBeRetained { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FullBackupTypesToBeRetained; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).FullBackupTypesToBeRetained = value ?? null; }

        /// <summary>
        /// Tells if this copy should use storage pool retention period days or the retention defined for this copy. Set as true to
        /// use retention defined on this copy.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RetentionRuleOverrideRetentionSettings { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).OverrideRetentionSettings; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).OverrideRetentionSettings = value ?? default(bool); }

        /// <summary>Retention period in days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RetentionRuleRetentionPeriodDays { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).RetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).RetentionPeriodDays = value ?? default(long); }

        /// <summary>Number of snap recovery points for snap copy for retention</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RetentionRuleSnapRecoveryPoints { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SnapRecoveryPoints; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SnapRecoveryPoints = value ?? default(long); }

        /// <summary>Which type of retention rule should be used for the given backup destination</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RetentionRuleType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).RetentionRuleType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).RetentionRuleType = value ?? null; }

        /// <summary>Should extended retention rules be used</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RetentionRuleUseExtendedRetentionRules { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).UseExtendedRetentionRules; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).UseExtendedRetentionRules = value ?? default(bool); }

        /// <summary>Backing field for <see cref="RetentionRules" /> property.</summary>
        private Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfo _retentionRules;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfo RetentionRules { get => (this._retentionRules = this._retentionRules ?? new Commvault.Powershell.Models.PlanBackupDestinationRetentionRuleInfo()); set => this._retentionRules = value; }

        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? SecondExtendedRetentionRuleIsInfiniteRetention { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleIsInfiniteRetention = value ?? default(bool); }

        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SecondExtendedRetentionRuleRetentionPeriodDays { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleRetentionPeriodDays = value ?? default(long); }

        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SecondExtendedRetentionRuleType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).SecondExtendedRetentionRuleType = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SourceId { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SourceId; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SourceId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceName { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SourceName; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).SourceName = value ?? null; }

        /// <summary>Id of Storage Pool</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? StorageId { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageId; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageId = value ?? default(long); }

        /// <summary>Name of Storage Pool</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string StorageName { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageName; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageName = value ?? null; }

        /// <summary>Retention period of pool in days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? StorageRetentionPeriodDays { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageRetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageRetentionPeriodDays = value ?? default(long); }

        /// <summary>
        /// Bit flag indicating WORM configuration of storage pool. 0 means no lock, 1 means compliance lock, 2 means worm storage
        /// lock, 4 means Object worm lock and 8 means bucket worm lock.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? StorageWormStoragePoolFlag { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageWormStoragePoolFlag; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).StorageWormStoragePoolFlag = value ?? default(long); }

        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? ThirdExtendedRetentionRuleIsInfiniteRetention { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleIsInfiniteRetention = value ?? default(bool); }

        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? ThirdExtendedRetentionRuleRetentionPeriodDays { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleRetentionPeriodDays = value ?? default(long); }

        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string ThirdExtendedRetentionRuleType { get => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfoInternal)RetentionRules).ThirdExtendedRetentionRuleType = value ?? null; }

        /// <summary>Type of Storage Pool</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string Type { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Type; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoInternal)General).Type = value ?? null; }

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

        }
    }
    public partial interface IPlanBackupDestinationDetails :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>
        /// Tells what start date, backup types should be copied from. The date is provided in unix time format in number of seconds.
        /// -1 means initial backup date.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Tells what start date, backup types should be copied from. The date is provided in unix time format in number of seconds. -1 means initial backup date.",
        SerializedName = @"backupTypesCopiedFrom",
        PossibleTypes = new [] { typeof(long) })]
        long? BackupTypeBackupTypesCopiedFrom { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.",
        SerializedName = @"backupTypesToCopy",
        PossibleTypes = new [] { typeof(string) })]
        string BackupTypeBackupTypesToCopy { get; set; }
        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default is LAST while adding new backup destination.",
        SerializedName = @"fullBackupTypesToCopy",
        PossibleTypes = new [] { typeof(string) })]
        string BackupTypeFullBackupTypesToCopy { get; set; }
        /// <summary>
        /// Flag to specify whether backup destination is configurable (True when it belongs to a base plan or a derived plan with
        /// overriden storage pool)
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to specify whether backup destination is configurable (True when it belongs to a base plan or a derived plan with overriden storage pool)",
        SerializedName = @"configurable",
        PossibleTypes = new [] { typeof(bool) })]
        bool? Configurable { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set as true, no need to specify retentionPeriodDays.",
        SerializedName = @"isInfiniteRetention",
        PossibleTypes = new [] { typeof(bool) })]
        bool? FirstExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set, no need to specify isInfiniteRetention as false.",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? FirstExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string FirstExtendedRetentionRuleType { get; set; }
        /// <summary>Order of backup destinaion copy created in storage policy</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Order of backup destinaion copy created in storage policy",
        SerializedName = @"copyPrecedence",
        PossibleTypes = new [] { typeof(long) })]
        long? GeneralCopyPrecedence { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"copyType",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralCopyType { get; set; }
        /// <summary>Is this an active backup destination?</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this an active backup destination?",
        SerializedName = @"isActive",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralIsActive { get; set; }
        /// <summary>Is this a default backup destination?</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this a default backup destination?",
        SerializedName = @"isDefault",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralIsDefault { get; set; }
        /// <summary>Is this a mirror copy?</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this a mirror copy?",
        SerializedName = @"isMirrorCopy",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralIsMirrorCopy { get; set; }
        /// <summary>Is this a snap copy?</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this a snap copy?",
        SerializedName = @"isSnapCopy",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralIsSnapCopy { get; set; }
        /// <summary>
        /// Only for snap copy. Tells if the snap copy supports SVM Mapping to NetApp cloud targets only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Only for snap copy. Tells if the snap copy supports SVM Mapping to NetApp cloud targets only.",
        SerializedName = @"netAppCloudTarget",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralNetAppCloudTarget { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"snapCopyType",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralSnapCopyType { get; set; }
        /// <summary>StorageType</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"StorageType",
        SerializedName = @"storageType",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralStorageType { get; set; }

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

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string RegionName { get; set; }
        /// <summary>Tells if this copy has data aging enabled</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Tells if this copy has data aging enabled",
        SerializedName = @"enableDataAging",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RetentionRuleEnableDataAging { get; set; }
        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default is LAST while adding new backup destination.",
        SerializedName = @"fullBackupTypesToBeRetained",
        PossibleTypes = new [] { typeof(string) })]
        string RetentionRuleFullBackupTypesToBeRetained { get; set; }
        /// <summary>
        /// Tells if this copy should use storage pool retention period days or the retention defined for this copy. Set as true to
        /// use retention defined on this copy.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Tells if this copy should use storage pool retention period days or the retention defined for this copy. Set as true to use retention defined on this copy.",
        SerializedName = @"overrideRetentionSettings",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RetentionRuleOverrideRetentionSettings { get; set; }
        /// <summary>Retention period in days</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Retention period in days",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? RetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>Number of snap recovery points for snap copy for retention</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Number of snap recovery points for snap copy for retention",
        SerializedName = @"snapRecoveryPoints",
        PossibleTypes = new [] { typeof(long) })]
        long? RetentionRuleSnapRecoveryPoints { get; set; }
        /// <summary>Which type of retention rule should be used for the given backup destination</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Which type of retention rule should be used for the given backup destination",
        SerializedName = @"retentionRuleType",
        PossibleTypes = new [] { typeof(string) })]
        string RetentionRuleType { get; set; }
        /// <summary>Should extended retention rules be used</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Should extended retention rules be used",
        SerializedName = @"useExtendedRetentionRules",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RetentionRuleUseExtendedRetentionRules { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set as true, no need to specify retentionPeriodDays.",
        SerializedName = @"isInfiniteRetention",
        PossibleTypes = new [] { typeof(bool) })]
        bool? SecondExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set, no need to specify isInfiniteRetention as false.",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? SecondExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string SecondExtendedRetentionRuleType { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SourceName { get; set; }
        /// <summary>Id of Storage Pool</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Id of Storage Pool",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? StorageId { get; set; }
        /// <summary>Name of Storage Pool</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Name of Storage Pool",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string StorageName { get; set; }
        /// <summary>Retention period of pool in days</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Retention period of pool in days",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? StorageRetentionPeriodDays { get; set; }
        /// <summary>
        /// Bit flag indicating WORM configuration of storage pool. 0 means no lock, 1 means compliance lock, 2 means worm storage
        /// lock, 4 means Object worm lock and 8 means bucket worm lock.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Bit flag indicating WORM configuration of storage pool. 0 means no lock, 1 means compliance lock, 2 means worm storage lock, 4 means Object worm lock and 8 means bucket worm lock.",
        SerializedName = @"wormStoragePoolFlag",
        PossibleTypes = new [] { typeof(long) })]
        long? StorageWormStoragePoolFlag { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set as true, no need to specify retentionPeriodDays.",
        SerializedName = @"isInfiniteRetention",
        PossibleTypes = new [] { typeof(bool) })]
        bool? ThirdExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"If this is set, no need to specify isInfiniteRetention as false.",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? ThirdExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string ThirdExtendedRetentionRuleType { get; set; }
        /// <summary>Type of Storage Pool</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Type of Storage Pool",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string Type { get; set; }

    }
    internal partial interface IPlanBackupDestinationDetailsInternal

    {
        Commvault.Powershell.Models.IPlanBackupDestinationBackupTypeInfo BackupType { get; set; }
        /// <summary>
        /// Tells what start date, backup types should be copied from. The date is provided in unix time format in number of seconds.
        /// -1 means initial backup date.
        /// </summary>
        long? BackupTypeBackupTypesCopiedFrom { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        string BackupTypeBackupTypesToCopy { get; set; }
        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        string BackupTypeFullBackupTypesToCopy { get; set; }
        /// <summary>
        /// Flag to specify whether backup destination is configurable (True when it belongs to a base plan or a derived plan with
        /// overriden storage pool)
        /// </summary>
        bool? Configurable { get; set; }

        Commvault.Powershell.Models.IPlanRetentionRule ExtendedRetentionRuleFirstExtendedRetentionRule { get; set; }

        Commvault.Powershell.Models.IPlanRetentionRule ExtendedRetentionRuleSecondExtendedRetentionRule { get; set; }

        Commvault.Powershell.Models.IPlanRetentionRule ExtendedRetentionRuleThirdExtendedRetentionRule { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        bool? FirstExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        long? FirstExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        string FirstExtendedRetentionRuleType { get; set; }

        Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfo General { get; set; }
        /// <summary>Order of backup destinaion copy created in storage policy</summary>
        long? GeneralCopyPrecedence { get; set; }

        string GeneralCopyType { get; set; }
        /// <summary>Is this an active backup destination?</summary>
        bool? GeneralIsActive { get; set; }
        /// <summary>Is this a default backup destination?</summary>
        bool? GeneralIsDefault { get; set; }
        /// <summary>Is this a mirror copy?</summary>
        bool? GeneralIsMirrorCopy { get; set; }
        /// <summary>Is this a snap copy?</summary>
        bool? GeneralIsSnapCopy { get; set; }
        /// <summary>
        /// Only for snap copy. Tells if the snap copy supports SVM Mapping to NetApp cloud targets only.
        /// </summary>
        bool? GeneralNetAppCloudTarget { get; set; }

        string GeneralSnapCopyType { get; set; }

        Commvault.Powershell.Models.IIdName GeneralSource { get; set; }
        /// <summary>StoragePool</summary>
        Commvault.Powershell.Models.IStoragePool GeneralStorage { get; set; }
        /// <summary>StorageType</summary>
        string GeneralStorageType { get; set; }

        Commvault.Powershell.Models.ISnapshotCopyMapping[] Mappings { get; set; }

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

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

        long? PlanBackupDestinationId { get; set; }

        string PlanBackupDestinationName { get; set; }

        long? PlanId { get; set; }

        string PlanName { get; set; }

        Commvault.Powershell.Models.IIdNameDisplayName Region { get; set; }

        string RegionDisplayName { get; set; }

        long? RegionId { get; set; }

        string RegionName { get; set; }
        /// <summary>Tells if this copy has data aging enabled</summary>
        bool? RetentionRuleEnableDataAging { get; set; }
        /// <summary>
        /// If you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
        /// </summary>
        Commvault.Powershell.Models.IExtendedRetentionRules RetentionRuleExtendedRetentionRules { get; set; }
        /// <summary>
        /// Which type of backup type should be copied for the given backup destination when backup type is not all jobs. Default
        /// is LAST while adding new backup destination.
        /// </summary>
        string RetentionRuleFullBackupTypesToBeRetained { get; set; }
        /// <summary>
        /// Tells if this copy should use storage pool retention period days or the retention defined for this copy. Set as true to
        /// use retention defined on this copy.
        /// </summary>
        bool? RetentionRuleOverrideRetentionSettings { get; set; }
        /// <summary>Retention period in days</summary>
        long? RetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>Number of snap recovery points for snap copy for retention</summary>
        long? RetentionRuleSnapRecoveryPoints { get; set; }
        /// <summary>Which type of retention rule should be used for the given backup destination</summary>
        string RetentionRuleType { get; set; }
        /// <summary>Should extended retention rules be used</summary>
        bool? RetentionRuleUseExtendedRetentionRules { get; set; }

        Commvault.Powershell.Models.IPlanBackupDestinationRetentionRuleInfo RetentionRules { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        bool? SecondExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        long? SecondExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        string SecondExtendedRetentionRuleType { get; set; }

        long? SourceId { get; set; }

        string SourceName { get; set; }
        /// <summary>Id of Storage Pool</summary>
        long? StorageId { get; set; }
        /// <summary>Name of Storage Pool</summary>
        string StorageName { get; set; }
        /// <summary>Retention period of pool in days</summary>
        long? StorageRetentionPeriodDays { get; set; }
        /// <summary>
        /// Bit flag indicating WORM configuration of storage pool. 0 means no lock, 1 means compliance lock, 2 means worm storage
        /// lock, 4 means Object worm lock and 8 means bucket worm lock.
        /// </summary>
        long? StorageWormStoragePoolFlag { get; set; }
        /// <summary>If this is set as true, no need to specify retentionPeriodDays.</summary>
        bool? ThirdExtendedRetentionRuleIsInfiniteRetention { get; set; }
        /// <summary>If this is set, no need to specify isInfiniteRetention as false.</summary>
        long? ThirdExtendedRetentionRuleRetentionPeriodDays { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        string ThirdExtendedRetentionRuleType { get; set; }
        /// <summary>Type of Storage Pool</summary>
        string Type { get; set; }

    }
}