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 GlobalConfigInfo</summary>
        Commvault.Powershell.Models.IGlobalConfigInfo Commvault.Powershell.Models.IPlanBackupDestinationDetailsInternal.GlobalConfigInfo { get => (this._globalConfigInfo = this._globalConfigInfo ?? new Commvault.Powershell.Models.GlobalConfigInfo()); set { {_globalConfigInfo = 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)]
        public Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfo General { get => (this._general = this._general ?? new Commvault.Powershell.Models.PlanBackupDestinationGeneralInfo()); set => this._general = value; }

        /// <summary>Backing field for <see cref="GlobalConfigInfo" /> property.</summary>
        private Commvault.Powershell.Models.IGlobalConfigInfo _globalConfigInfo;

        /// <summary>Only applicable on Global CommCells</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IGlobalConfigInfo GlobalConfigInfo { get => (this._globalConfigInfo = this._globalConfigInfo ?? new Commvault.Powershell.Models.GlobalConfigInfo()); set => this._globalConfigInfo = value; }

        /// <summary>
        /// Decides whether the global configuration should be applied to all the Service commcells, including the newly created ones
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GlobalConfigInfoApplyOnAllCommCells { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).ApplyOnAllCommCells; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).ApplyOnAllCommCells = value ?? default(bool); }

        /// <summary>List of Service CommCells where the global configuration is applied</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IGlobalConfigCommcellInfo[] GlobalConfigInfoCommcells { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Commcells; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Commcells = value ?? null /* arrayOf */; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GlobalConfigInfoId { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Id; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Id = value ?? null; }

        /// <summary>Indicates whether global configuration deletion has been started.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GlobalConfigInfoIsMarkedForDeletion { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).IsMarkedForDeletion; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).IsMarkedForDeletion = value ?? default(bool); }

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

        /// <summary>The entity level at which the config is applied.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GlobalConfigInfoScope { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Scope; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Scope = value ?? null; }

        /// <summary>CommCellEntityCache filter query string used for filtering the scope</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GlobalConfigInfoScopeFilterQuery { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).ScopeFilterQuery; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).ScopeFilterQuery = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GlobalConfigInfoStatus { get => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Status; set => ((Commvault.Powershell.Models.IGlobalConfigInfoInternal)GlobalConfigInfo).Status = 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; }

        /// <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>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; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"general",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfo) })]
        Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfo General { get; set; }
        /// <summary>
        /// Decides whether the global configuration should be applied to all the Service commcells, including the newly created ones
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Decides whether the global configuration should be applied to all the Service commcells, including the newly created ones",
        SerializedName = @"applyOnAllCommCells",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GlobalConfigInfoApplyOnAllCommCells { get; set; }
        /// <summary>List of Service CommCells where the global configuration is applied</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"List of Service CommCells where the global configuration is applied",
        SerializedName = @"commcells",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IGlobalConfigCommcellInfo) })]
        Commvault.Powershell.Models.IGlobalConfigCommcellInfo[] GlobalConfigInfoCommcells { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(string) })]
        string GlobalConfigInfoId { get; set; }
        /// <summary>Indicates whether global configuration deletion has been started.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Indicates whether global configuration deletion has been started.",
        SerializedName = @"isMarkedForDeletion",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GlobalConfigInfoIsMarkedForDeletion { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string GlobalConfigInfoName { get; set; }
        /// <summary>The entity level at which the config is applied.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The entity level at which the config is applied.",
        SerializedName = @"scope",
        PossibleTypes = new [] { typeof(string) })]
        string GlobalConfigInfoScope { get; set; }
        /// <summary>CommCellEntityCache filter query string used for filtering the scope</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"CommCellEntityCache filter query string used for filtering the scope",
        SerializedName = @"scopeFilterQuery",
        PossibleTypes = new [] { typeof(string) })]
        string GlobalConfigInfoScopeFilterQuery { get; set; }

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

    }
    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>Only applicable on Global CommCells</summary>
        Commvault.Powershell.Models.IGlobalConfigInfo GlobalConfigInfo { get; set; }
        /// <summary>
        /// Decides whether the global configuration should be applied to all the Service commcells, including the newly created ones
        /// </summary>
        bool? GlobalConfigInfoApplyOnAllCommCells { get; set; }
        /// <summary>List of Service CommCells where the global configuration is applied</summary>
        Commvault.Powershell.Models.IGlobalConfigCommcellInfo[] GlobalConfigInfoCommcells { get; set; }

        string GlobalConfigInfoId { get; set; }
        /// <summary>Indicates whether global configuration deletion has been started.</summary>
        bool? GlobalConfigInfoIsMarkedForDeletion { get; set; }

        string GlobalConfigInfoName { get; set; }
        /// <summary>The entity level at which the config is applied.</summary>
        string GlobalConfigInfoScope { get; set; }
        /// <summary>CommCellEntityCache filter query string used for filtering the scope</summary>
        string GlobalConfigInfoScopeFilterQuery { get; set; }

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

    }
}