generated/api/Models/MigrationSettings.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>Name the migration group and define the frequency</summary>
    public partial class MigrationSettings :
        Commvault.Powershell.Models.IMigrationSettings,
        Commvault.Powershell.Models.IMigrationSettingsInternal
    {

        /// <summary>Internal Acessors for MigrationFrequency</summary>
        Commvault.Powershell.Models.IPlanPattern Commvault.Powershell.Models.IMigrationSettingsInternal.MigrationFrequency { get => (this._migrationFrequency = this._migrationFrequency ?? new Commvault.Powershell.Models.PlanPattern()); set { {_migrationFrequency = value;} } }

        /// <summary>Backing field for <see cref="MigrationFrequency" /> property.</summary>
        private Commvault.Powershell.Models.IPlanPattern _migrationFrequency;

        /// <summary>
        /// If updating pattern, the value which needs to be retained also needs to be provided along with the updated value
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IPlanPattern MigrationFrequency { get => (this._migrationFrequency = this._migrationFrequency ?? new Commvault.Powershell.Models.PlanPattern()); set => this._migrationFrequency = value; }

        /// <summary>Frequency in days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyDailyFrequency { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).DailyFrequency; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).DailyFrequency = value ?? default(long); }

        /// <summary>
        /// Frequency in hours per day. Precedence is hourly, daily, weekly and monthly, in that order.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyHourlyFrequency { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).HourlyFrequency; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).HourlyFrequency = value ?? default(long); }

        /// <summary>Frequency in minutes</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyMinuteFrequency { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MinuteFrequency; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MinuteFrequency = value ?? default(long); }

        /// <summary>Frequency in months. Only for incremental backup frequency.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyMonthlyFrequency { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequency; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequency = value ?? default(long); }

        /// <summary>Only available for incremental backup frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyMonthlyFrequencyDayOfMonth { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyDayOfMonth = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyMonthlyFrequencyDayOfWeek { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyDayOfWeek; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyDayOfWeek = value ?? null; }

        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyMonthlyFrequencyWeekOfMonth { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyWeekOfMonth; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).MonthlyFrequencyWeekOfMonth = value ?? null; }

        /// <summary>
        /// Time in seconds from the beginning of the day when the backup starts. This is a mandatory field for daily, weekly, monthly,
        /// yearly frequencies
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyStartTime { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).StartTime; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).StartTime = value ?? default(long); }

        /// <summary>Frequency in weeks. Only for incremental backup frequency.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyWeeklyFrequency { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).WeeklyFrequency; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).WeeklyFrequency = value ?? default(long); }

        /// <summary>Days of the week for weekly frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] MigrationFrequencyWeeklyFrequencyDays { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).WeeklyFrequencyDays; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).WeeklyFrequencyDays = value ?? null /* arrayOf */; }

        /// <summary>Only available for incremental backup frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyYearlyFrequencyDayOfMonth { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyDayOfMonth = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyYearlyFrequencyDayOfWeek { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyDayOfWeek; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyDayOfWeek = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyYearlyFrequencyMonthOfYear { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyMonthOfYear; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyMonthOfYear = value ?? null; }

        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyYearlyFrequencyWeekOfMonth { get => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyWeekOfMonth; set => ((Commvault.Powershell.Models.IPlanPatternInternal)MigrationFrequency).YearlyFrequencyWeekOfMonth = value ?? null; }

        /// <summary>Backing field for <see cref="MigrationWindow" /> property.</summary>
        private Commvault.Powershell.Models.ICreateBlackoutWindow[] _migrationWindow;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.ICreateBlackoutWindow[] MigrationWindow { get => this._migrationWindow; set => this._migrationWindow = value; }

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string Name { get => this._name; set => this._name = value; }

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

        }
    }
    /// Name the migration group and define the frequency
    public partial interface IMigrationSettings :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>Frequency in days</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Frequency in days",
        SerializedName = @"dailyFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyDailyFrequency { get; set; }
        /// <summary>
        /// Frequency in hours per day. Precedence is hourly, daily, weekly and monthly, in that order.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Frequency in hours per day. Precedence is hourly, daily, weekly and monthly, in that order.",
        SerializedName = @"hourlyFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyHourlyFrequency { get; set; }
        /// <summary>Frequency in minutes</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Frequency in minutes",
        SerializedName = @"minuteFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyMinuteFrequency { get; set; }
        /// <summary>Frequency in months. Only for incremental backup frequency.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Frequency in months. Only for incremental backup frequency.",
        SerializedName = @"monthlyFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyMonthlyFrequency { get; set; }
        /// <summary>Only available for incremental backup frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Only available for incremental backup frequency",
        SerializedName = @"monthlyFrequencyDayOfMonth",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyMonthlyFrequencyDayOfMonth { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"monthlyFrequencyDayOfWeek",
        PossibleTypes = new [] { typeof(string) })]
        string MigrationFrequencyMonthlyFrequencyDayOfWeek { get; set; }
        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specific week of a month",
        SerializedName = @"monthlyFrequencyWeekOfMonth",
        PossibleTypes = new [] { typeof(string) })]
        string MigrationFrequencyMonthlyFrequencyWeekOfMonth { get; set; }
        /// <summary>
        /// Time in seconds from the beginning of the day when the backup starts. This is a mandatory field for daily, weekly, monthly,
        /// yearly frequencies
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Time in seconds from the beginning of the day when the backup starts. This is a mandatory field for daily, weekly, monthly, yearly frequencies",
        SerializedName = @"startTime",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyStartTime { get; set; }
        /// <summary>Frequency in weeks. Only for incremental backup frequency.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Frequency in weeks. Only for incremental backup frequency.",
        SerializedName = @"weeklyFrequency",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyWeeklyFrequency { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Days of the week for weekly frequency",
        SerializedName = @"weeklyFrequencyDays",
        PossibleTypes = new [] { typeof(string) })]
        string[] MigrationFrequencyWeeklyFrequencyDays { get; set; }
        /// <summary>Only available for incremental backup frequency</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Only available for incremental backup frequency",
        SerializedName = @"yearlyFrequencyDayOfMonth",
        PossibleTypes = new [] { typeof(long) })]
        long? MigrationFrequencyYearlyFrequencyDayOfMonth { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"yearlyFrequencyMonthOfYear",
        PossibleTypes = new [] { typeof(string) })]
        string MigrationFrequencyYearlyFrequencyMonthOfYear { get; set; }
        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Specific week of a month",
        SerializedName = @"yearlyFrequencyWeekOfMonth",
        PossibleTypes = new [] { typeof(string) })]
        string MigrationFrequencyYearlyFrequencyWeekOfMonth { get; set; }

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

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

    }
    /// Name the migration group and define the frequency
    internal partial interface IMigrationSettingsInternal

    {
        /// <summary>
        /// If updating pattern, the value which needs to be retained also needs to be provided along with the updated value
        /// </summary>
        Commvault.Powershell.Models.IPlanPattern MigrationFrequency { get; set; }
        /// <summary>Frequency in days</summary>
        long? MigrationFrequencyDailyFrequency { get; set; }
        /// <summary>
        /// Frequency in hours per day. Precedence is hourly, daily, weekly and monthly, in that order.
        /// </summary>
        long? MigrationFrequencyHourlyFrequency { get; set; }
        /// <summary>Frequency in minutes</summary>
        long? MigrationFrequencyMinuteFrequency { get; set; }
        /// <summary>Frequency in months. Only for incremental backup frequency.</summary>
        long? MigrationFrequencyMonthlyFrequency { get; set; }
        /// <summary>Only available for incremental backup frequency</summary>
        long? MigrationFrequencyMonthlyFrequencyDayOfMonth { get; set; }

        string MigrationFrequencyMonthlyFrequencyDayOfWeek { get; set; }
        /// <summary>Specific week of a month</summary>
        string MigrationFrequencyMonthlyFrequencyWeekOfMonth { get; set; }
        /// <summary>
        /// Time in seconds from the beginning of the day when the backup starts. This is a mandatory field for daily, weekly, monthly,
        /// yearly frequencies
        /// </summary>
        long? MigrationFrequencyStartTime { get; set; }
        /// <summary>Frequency in weeks. Only for incremental backup frequency.</summary>
        long? MigrationFrequencyWeeklyFrequency { get; set; }
        /// <summary>Days of the week for weekly frequency</summary>
        string[] MigrationFrequencyWeeklyFrequencyDays { get; set; }
        /// <summary>Only available for incremental backup frequency</summary>
        long? MigrationFrequencyYearlyFrequencyDayOfMonth { get; set; }

        string MigrationFrequencyYearlyFrequencyDayOfWeek { get; set; }

        string MigrationFrequencyYearlyFrequencyMonthOfYear { get; set; }
        /// <summary>Specific week of a month</summary>
        string MigrationFrequencyYearlyFrequencyWeekOfMonth { get; set; }

        Commvault.Powershell.Models.ICreateBlackoutWindow[] MigrationWindow { get; set; }

        string Name { get; set; }

    }
}