generated/api/Models/ExtendedRetentionRules.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;

    /// <summary>
    /// If you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
    /// </summary>
    public partial class ExtendedRetentionRules :
        Commvault.Powershell.Models.IExtendedRetentionRules,
        Commvault.Powershell.Models.IExtendedRetentionRulesInternal
    {

        /// <summary>Internal Acessors for FirstExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IExtendedRetentionRulesInternal.FirstExtendedRetentionRule { get => (this._firstExtendedRetentionRule = this._firstExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set { {_firstExtendedRetentionRule = value;} } }

        /// <summary>Internal Acessors for SecondExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IExtendedRetentionRulesInternal.SecondExtendedRetentionRule { get => (this._secondExtendedRetentionRule = this._secondExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set { {_secondExtendedRetentionRule = value;} } }

        /// <summary>Internal Acessors for ThirdExtendedRetentionRule</summary>
        Commvault.Powershell.Models.IPlanRetentionRule Commvault.Powershell.Models.IExtendedRetentionRulesInternal.ThirdExtendedRetentionRule { get => (this._thirdExtendedRetentionRule = this._thirdExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set { {_thirdExtendedRetentionRule = value;} } }

        /// <summary>Backing field for <see cref="FirstExtendedRetentionRule" /> property.</summary>
        private Commvault.Powershell.Models.IPlanRetentionRule _firstExtendedRetentionRule;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanRetentionRule FirstExtendedRetentionRule { get => (this._firstExtendedRetentionRule = this._firstExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set => this._firstExtendedRetentionRule = 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.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).IsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).IsInfiniteRetention = 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.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).RetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).RetentionPeriodDays = 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.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).Type; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)FirstExtendedRetentionRule).Type = value ?? null; }

        /// <summary>Backing field for <see cref="SecondExtendedRetentionRule" /> property.</summary>
        private Commvault.Powershell.Models.IPlanRetentionRule _secondExtendedRetentionRule;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanRetentionRule SecondExtendedRetentionRule { get => (this._secondExtendedRetentionRule = this._secondExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set => this._secondExtendedRetentionRule = 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.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).IsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).IsInfiniteRetention = 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.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).RetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).RetentionPeriodDays = 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.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).Type; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)SecondExtendedRetentionRule).Type = value ?? null; }

        /// <summary>Backing field for <see cref="ThirdExtendedRetentionRule" /> property.</summary>
        private Commvault.Powershell.Models.IPlanRetentionRule _thirdExtendedRetentionRule;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanRetentionRule ThirdExtendedRetentionRule { get => (this._thirdExtendedRetentionRule = this._thirdExtendedRetentionRule ?? new Commvault.Powershell.Models.PlanRetentionRule()); set => this._thirdExtendedRetentionRule = 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.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).IsInfiniteRetention; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).IsInfiniteRetention = 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.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).RetentionPeriodDays; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).RetentionPeriodDays = 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.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).Type; set => ((Commvault.Powershell.Models.IPlanRetentionRuleInternal)ThirdExtendedRetentionRule).Type = value ?? null; }

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

        }
    }
    /// If you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
    public partial interface IExtendedRetentionRules :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <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>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; }

    }
    /// If you want to update, specify the whole object. Extended retention rules should be bigger than retention period.
    internal partial interface IExtendedRetentionRulesInternal

    {
        Commvault.Powershell.Models.IPlanRetentionRule FirstExtendedRetentionRule { 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.IPlanRetentionRule SecondExtendedRetentionRule { 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; }

        Commvault.Powershell.Models.IPlanRetentionRule ThirdExtendedRetentionRule { 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; }

    }
}