generated/api/Models/CreatePlanBackupDestination.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 CreatePlanBackupDestination :
        Commvault.Powershell.Models.ICreatePlanBackupDestination,
        Commvault.Powershell.Models.ICreatePlanBackupDestinationInternal
    {

        /// <summary>Backing field for <see cref="BackupDestinationName" /> property.</summary>
        private string _backupDestinationName;

        /// <summary>Backup destination details. Enter the name during creation.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string BackupDestinationName { get => this._backupDestinationName; set => this._backupDestinationName = value; }

        /// <summary>Backing field for <see cref="BackupStartTime" /> property.</summary>
        private long? _backupStartTime;

        /// <summary>Backup start time in seconds. The time is provided in unix time format.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? BackupStartTime { get => this._backupStartTime; set => this._backupStartTime = value; }

        /// <summary>Backing field for <see cref="BackupsToCopy" /> property.</summary>
        private string _backupsToCopy;

        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string BackupsToCopy { get => this._backupsToCopy; set => this._backupsToCopy = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRuleFirstExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.ICreatePlanBackupDestinationInternal.ExtendedRetentionRuleFirstExtendedRetentionRule { get => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRule; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRule = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRuleSecondExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.ICreatePlanBackupDestinationInternal.ExtendedRetentionRuleSecondExtendedRetentionRule { get => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRule; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRule = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRuleThirdExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.ICreatePlanBackupDestinationInternal.ExtendedRetentionRuleThirdExtendedRetentionRule { get => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRule; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRule = value; }

        /// <summary>Internal Acessors for ExtendedRetentionRules</summary>
        Commvault.Powershell.Models.IExtendedRetentionRules Commvault.Powershell.Models.ICreatePlanBackupDestinationInternal.ExtendedRetentionRules { get => (this._extendedRetentionRules = this._extendedRetentionRules ?? new Commvault.Powershell.Models.ExtendedRetentionRules()); set { {_extendedRetentionRules = value;} } }

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

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

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

        /// <summary>Backing field for <see cref="ExtendedRetentionRules" /> property.</summary>
        private Commvault.Powershell.Models.IExtendedRetentionRules _extendedRetentionRules;

        /// <summary>
        /// If you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IExtendedRetentionRules ExtendedRetentionRules { get => (this._extendedRetentionRules = this._extendedRetentionRules ?? new Commvault.Powershell.Models.ExtendedRetentionRules()); set => this._extendedRetentionRules = 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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).FirstExtendedRetentionRuleType = value ?? null; }

        /// <summary>Backing field for <see cref="FullBackupTypesToCopy" /> property.</summary>
        private string _fullBackupTypesToCopy;

        /// <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.Owned)]
        public string FullBackupTypesToCopy { get => this._fullBackupTypesToCopy; set => this._fullBackupTypesToCopy = value; }

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

        /// <summary>Used if the copy is used for replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? IsConfiguredForReplication { get => this._isConfiguredForReplication; set => this._isConfiguredForReplication = value; }

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

        /// <summary>Is this a mirror copy? Only considered when isSnapCopy is true.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? IsMirrorCopy { get => this._isMirrorCopy; set => this._isMirrorCopy = value; }

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

        /// <summary>Is this a snap copy? If isMirrorCopy is not set, then default is Vault/Replica.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? IsSnapCopy { get => this._isSnapCopy; set => this._isSnapCopy = value; }

        /// <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="NetAppCloudTarget" /> property.</summary>
        private bool? _netAppCloudTarget;

        /// <summary>
        /// Only for snap copy. Enabling this changes SVM Mapping to NetApp cloud targets only.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? NetAppCloudTarget { get => this._netAppCloudTarget; set => this._netAppCloudTarget = value; }

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

        /// <summary>Flag to specify if primary storage is copy data management enabled.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? OptimizeForInstantClone { get => this._optimizeForInstantClone; set => this._optimizeForInstantClone = value; }

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

        /// <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.Owned)]
        public bool? OverrideRetentionSettings { get => this._overrideRetentionSettings; set => this._overrideRetentionSettings = value; }

        /// <summary>Backing field for <see cref="Region" /> property.</summary>
        private Commvault.Powershell.Models.IIdNameGuid _region;

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

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

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

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

        /// <summary>Backing field for <see cref="RetentionPeriodDays" /> property.</summary>
        private long? _retentionPeriodDays;

        /// <summary>
        /// Retention period in days. -1 can be specified for infinite retention. If this and snapRecoveryPoints both are not specified,
        /// this takes precedence.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? RetentionPeriodDays { get => this._retentionPeriodDays; set => this._retentionPeriodDays = value; }

        /// <summary>Backing field for <see cref="RetentionRuleType" /> property.</summary>
        private string _retentionRuleType;

        /// <summary>Which type of retention rule should be used for the given backup destination</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string RetentionRuleType { get => this._retentionRuleType; set => this._retentionRuleType = 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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).SecondExtendedRetentionRuleType = value ?? null; }

        /// <summary>Backing field for <see cref="SnapRecoveryPoints" /> property.</summary>
        private long? _snapRecoveryPoints;

        /// <summary>
        /// Number of snap recovery points for snap copy for retention. Can be specified instead of retention period in Days for snap
        /// copy.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? SnapRecoveryPoints { get => this._snapRecoveryPoints; set => this._snapRecoveryPoints = value; }

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

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

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

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

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

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

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

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

        /// <summary>Backing field for <see cref="StorageTemplateTags" /> property.</summary>
        private Commvault.Powershell.Models.IIdNameValue[] _storageTemplateTags;

        /// <summary>
        /// It is used in Global config template plan creation. Needs in plan creation on global commcell
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdNameValue[] StorageTemplateTags { get => this._storageTemplateTags; set => this._storageTemplateTags = value; }

        /// <summary>Backing field for <see cref="StorageType" /> property.</summary>
        private string _storageType;

        /// <summary>StorageType</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string StorageType { get => this._storageType; set => this._storageType = value; }

        /// <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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRuleIsInfiniteRetention; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRuleRetentionPeriodDays; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).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.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRuleType; set => ((Commvault.Powershell.Models.IExtendedRetentionRulesInternal)ExtendedRetentionRules).ThirdExtendedRetentionRuleType = value ?? null; }

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

        /// <summary>Use extended retention rules</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? UseExtendedRetentionRules { get => this._useExtendedRetentionRules; set => this._useExtendedRetentionRules = value; }

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

        }
    }
    public partial interface ICreatePlanBackupDestination :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>Backup destination details. Enter the name during creation.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = true,
        ReadOnly = false,
        Description = @"Backup destination details. Enter the name during creation.",
        SerializedName = @"backupDestinationName",
        PossibleTypes = new [] { typeof(string) })]
        string BackupDestinationName { get; set; }
        /// <summary>Backup start time in seconds. The time is provided in unix time format.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Backup start time in seconds. The time is provided in unix time format.",
        SerializedName = @"backupStartTime",
        PossibleTypes = new [] { typeof(long) })]
        long? BackupStartTime { 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 = @"backupsToCopy",
        PossibleTypes = new [] { typeof(string) })]
        string BackupsToCopy { 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>
        /// 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 FullBackupTypesToCopy { get; set; }
        /// <summary>Used if the copy is used for replication group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Used if the copy is used for replication group",
        SerializedName = @"isConfiguredForReplication",
        PossibleTypes = new [] { typeof(bool) })]
        bool? IsConfiguredForReplication { get; set; }
        /// <summary>Is this a mirror copy? Only considered when isSnapCopy is true.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this a mirror copy? Only considered when isSnapCopy is true.",
        SerializedName = @"isMirrorCopy",
        PossibleTypes = new [] { typeof(bool) })]
        bool? IsMirrorCopy { get; set; }
        /// <summary>Is this a snap copy? If isMirrorCopy is not set, then default is Vault/Replica.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Is this a snap copy? If isMirrorCopy is not set, then default is Vault/Replica.",
        SerializedName = @"isSnapCopy",
        PossibleTypes = new [] { typeof(bool) })]
        bool? IsSnapCopy { 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>
        /// Only for snap copy. Enabling this changes SVM Mapping to NetApp cloud targets only.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Only for snap copy. Enabling this changes SVM Mapping to NetApp cloud targets only.",
        SerializedName = @"netAppCloudTarget",
        PossibleTypes = new [] { typeof(bool) })]
        bool? NetAppCloudTarget { get; set; }
        /// <summary>Flag to specify if primary storage is copy data management enabled.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Flag to specify if primary storage is copy data management enabled.",
        SerializedName = @"optimizeForInstantClone",
        PossibleTypes = new [] { typeof(bool) })]
        bool? OptimizeForInstantClone { 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? OverrideRetentionSettings { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"GUID",
        PossibleTypes = new [] { typeof(string) })]
        string RegionGuid { 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>
        /// Retention period in days. -1 can be specified for infinite retention. If this and snapRecoveryPoints both are not specified,
        /// this takes precedence.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Retention period in days. -1 can be specified for infinite retention. If this and snapRecoveryPoints both are not specified, this takes precedence.",
        SerializedName = @"retentionPeriodDays",
        PossibleTypes = new [] { typeof(long) })]
        long? RetentionPeriodDays { 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>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>
        /// Number of snap recovery points for snap copy for retention. Can be specified instead of retention period in Days for snap
        /// copy.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Number of snap recovery points for snap copy for retention. Can be specified instead of retention period in Days for snap copy.",
        SerializedName = @"snapRecoveryPoints",
        PossibleTypes = new [] { typeof(long) })]
        long? SnapRecoveryPoints { get; set; }

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string StoragePoolName { get; set; }
        /// <summary>
        /// It is used in Global config template plan creation. Needs in plan creation on global commcell
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"It is used in Global config template plan creation. Needs in plan creation on global commcell",
        SerializedName = @"storageTemplateTags",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdNameValue) })]
        Commvault.Powershell.Models.IIdNameValue[] StorageTemplateTags { get; set; }
        /// <summary>StorageType</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"StorageType",
        SerializedName = @"storageType",
        PossibleTypes = new [] { typeof(string) })]
        string StorageType { 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>Use extended retention rules</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Use extended retention rules",
        SerializedName = @"useExtendedRetentionRules",
        PossibleTypes = new [] { typeof(bool) })]
        bool? UseExtendedRetentionRules { get; set; }

    }
    internal partial interface ICreatePlanBackupDestinationInternal

    {
        /// <summary>Backup destination details. Enter the name during creation.</summary>
        string BackupDestinationName { get; set; }
        /// <summary>Backup start time in seconds. The time is provided in unix time format.</summary>
        long? BackupStartTime { get; set; }
        /// <summary>
        /// All_JOBS means SYNCHRONOUS copy type, others are applicable for SELECTIVE copy Type only.
        /// </summary>
        string BackupsToCopy { 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 you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
        /// </summary>
        Commvault.Powershell.Models.IExtendedRetentionRules ExtendedRetentionRules { 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; }
        /// <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 FullBackupTypesToCopy { get; set; }
        /// <summary>Used if the copy is used for replication group</summary>
        bool? IsConfiguredForReplication { get; set; }
        /// <summary>Is this a mirror copy? Only considered when isSnapCopy is true.</summary>
        bool? IsMirrorCopy { get; set; }
        /// <summary>Is this a snap copy? If isMirrorCopy is not set, then default is Vault/Replica.</summary>
        bool? IsSnapCopy { get; set; }

        Commvault.Powershell.Models.ISnapshotCopyMapping[] Mappings { get; set; }
        /// <summary>
        /// Only for snap copy. Enabling this changes SVM Mapping to NetApp cloud targets only.
        /// </summary>
        bool? NetAppCloudTarget { get; set; }
        /// <summary>Flag to specify if primary storage is copy data management enabled.</summary>
        bool? OptimizeForInstantClone { 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? OverrideRetentionSettings { get; set; }

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

        string RegionGuid { get; set; }

        long? RegionId { get; set; }

        string RegionName { get; set; }
        /// <summary>
        /// Retention period in days. -1 can be specified for infinite retention. If this and snapRecoveryPoints both are not specified,
        /// this takes precedence.
        /// </summary>
        long? RetentionPeriodDays { get; set; }
        /// <summary>Which type of retention rule should be used for the given backup destination</summary>
        string RetentionRuleType { 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>
        /// Number of snap recovery points for snap copy for retention. Can be specified instead of retention period in Days for snap
        /// copy.
        /// </summary>
        long? SnapRecoveryPoints { get; set; }

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

        long? SourceCopyId { get; set; }

        string SourceCopyName { get; set; }

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

        long? StoragePoolId { get; set; }

        string StoragePoolName { get; set; }
        /// <summary>
        /// It is used in Global config template plan creation. Needs in plan creation on global commcell
        /// </summary>
        Commvault.Powershell.Models.IIdNameValue[] StorageTemplateTags { get; set; }
        /// <summary>StorageType</summary>
        string StorageType { 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>Use extended retention rules</summary>
        bool? UseExtendedRetentionRules { get; set; }

    }
}