generated/api/Models/UpdatePlanBackupDestinationDetails.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 UpdatePlanBackupDestinationDetails :
        Commvault.Powershell.Models.IUpdatePlanBackupDestinationDetails,
        Commvault.Powershell.Models.IUpdatePlanBackupDestinationDetailsInternal
    {

        /// <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.IUpdatePlanBackupDestinationDetailsInternal.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.IUpdatePlanBackupDestinationDetailsInternal.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.IUpdatePlanBackupDestinationDetailsInternal.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.IUpdatePlanBackupDestinationDetailsInternal.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.IPlanBackupDestinationGeneralInfoUpdate Commvault.Powershell.Models.IUpdatePlanBackupDestinationDetailsInternal.General { get => (this._general = this._general ?? new Commvault.Powershell.Models.PlanBackupDestinationGeneralInfoUpdate()); set { {_general = value;} } }

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

        /// <summary>Internal Acessors for RetentionRuleExtendedRetentionRules</summary>
        Commvault.Powershell.Models.IExtendedRetentionRules Commvault.Powershell.Models.IUpdatePlanBackupDestinationDetailsInternal.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.IUpdatePlanBackupDestinationDetailsInternal.RetentionRules { get => (this._retentionRules = this._retentionRules ?? new Commvault.Powershell.Models.PlanBackupDestinationRetentionRuleInfo()); set { {_retentionRules = 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.IPlanBackupDestinationGeneralInfoUpdate _general;

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

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

        /// <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="NewName" /> property.</summary>
        private string _newName;

        /// <summary>New name for backup destination</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string NewName { get => this._newName; set => this._newName = value; }

        /// <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.IPlanBackupDestinationGeneralInfoUpdateInternal)General).SourceId; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoUpdateInternal)General).SourceId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceName { get => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoUpdateInternal)General).SourceName; set => ((Commvault.Powershell.Models.IPlanBackupDestinationGeneralInfoUpdateInternal)General).SourceName = 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="UpdatePlanBackupDestinationDetails" /> instance.</summary>
        public UpdatePlanBackupDestinationDetails()
        {

        }
    }
    public partial interface IUpdatePlanBackupDestinationDetails :
        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>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>Toggle to keep backup destination active</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Toggle to keep backup destination active",
        SerializedName = @"isActive",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralIsActive { 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; }
        /// <summary>New name for backup destination</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"New name for backup destination",
        SerializedName = @"newName",
        PossibleTypes = new [] { typeof(string) })]
        string NewName { 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>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 IUpdatePlanBackupDestinationDetailsInternal

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

        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.IPlanBackupDestinationGeneralInfoUpdate General { get; set; }
        /// <summary>Toggle to keep backup destination active</summary>
        bool? GeneralIsActive { get; set; }

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

        Commvault.Powershell.Models.ISnapshotCopyMapping[] Mappings { get; set; }
        /// <summary>New name for backup destination</summary>
        string NewName { 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>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; }

    }
}