generated/api/Models/MigrationConfiguration.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>Configuration for Migration to Azure</summary>
    public partial class MigrationConfiguration :
        Commvault.Powershell.Models.IMigrationConfiguration,
        Commvault.Powershell.Models.IMigrationConfigurationInternal
    {

        /// <summary>Internal Acessors for Destination</summary>
        Commvault.Powershell.Models.IMigrationDestination Commvault.Powershell.Models.IMigrationConfigurationInternal.Destination { get => (this._destination = this._destination ?? new Commvault.Powershell.Models.MigrationDestination()); set { {_destination = value;} } }

        /// <summary>Internal Acessors for DestinationCredentials</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.IMigrationConfigurationInternal.DestinationCredentials { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentials; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentials = value; }

        /// <summary>Internal Acessors for DestinationRegion</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.IMigrationConfigurationInternal.DestinationRegion { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).Region; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).Region = value; }

        /// <summary>Internal Acessors for MigrationPairs</summary>
        Commvault.Powershell.Models.IManagePaths Commvault.Powershell.Models.IMigrationConfigurationInternal.MigrationPairs { get => (this._migrationPairs = this._migrationPairs ?? new Commvault.Powershell.Models.ManagePaths()); set { {_migrationPairs = value;} } }

        /// <summary>Internal Acessors for MigrationSettingMigrationFrequency</summary>
        Commvault.Powershell.Models.IPlanPattern Commvault.Powershell.Models.IMigrationConfigurationInternal.MigrationSettingMigrationFrequency { get => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequency = value; }

        /// <summary>Internal Acessors for MigrationSettings</summary>
        Commvault.Powershell.Models.IMigrationSettings Commvault.Powershell.Models.IMigrationConfigurationInternal.MigrationSettings { get => (this._migrationSettings = this._migrationSettings ?? new Commvault.Powershell.Models.MigrationSettings()); set { {_migrationSettings = value;} } }

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

        /// <summary>Internal Acessors for Source</summary>
        Commvault.Powershell.Models.IMigrationSource Commvault.Powershell.Models.IMigrationConfigurationInternal.Source { get => (this._source = this._source ?? new Commvault.Powershell.Models.MigrationSource()); set { {_source = value;} } }

        /// <summary>Internal Acessors for SourceCredentials</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.IMigrationConfigurationInternal.SourceCredentials { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentials; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentials = value; }

        /// <summary>Backing field for <see cref="Destination" /> property.</summary>
        private Commvault.Powershell.Models.IMigrationDestination _destination;

        /// <summary>
        /// Specify node with write access to Azure File share. The destincation type (NFS/CIFS) is determined by source.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IMigrationDestination Destination { get => (this._destination = this._destination ?? new Commvault.Powershell.Models.MigrationDestination()); set => this._destination = value; }

        /// <summary>Access nodes for the destination client</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IAccessNodes[] DestinationAccessNode { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).AccessNode; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).AccessNode = value ?? null /* arrayOf */; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? DestinationCredentialsId { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentialsId; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentialsId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string DestinationCredentialsName { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentialsName; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationCredentialsName = value ?? null; }

        /// <summary>Azure storage account</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string DestinationName { get => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationName; set => ((Commvault.Powershell.Models.IMigrationDestinationInternal)Destination).DestinationName = value ?? null; }

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

        /// <summary>Kick off migration immediately?</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? KickOffMigrationImmediately { get => this._kickOffMigrationImmediately; set => this._kickOffMigrationImmediately = value; }

        /// <summary>Frequency in days</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyDailyFrequency { get => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyDailyFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyDailyFrequency = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyHourlyFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyHourlyFrequency = value ?? default(long); }

        /// <summary>Frequency in minutes</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? MigrationFrequencyMinuteFrequency { get => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMinuteFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMinuteFrequency = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequency = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequencyDayOfMonth = value ?? default(long); }

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

        /// <summary>Specific week of a month</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string MigrationFrequencyMonthlyFrequencyWeekOfMonth { get => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequencyWeekOfMonth; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyMonthlyFrequencyWeekOfMonth = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyStartTime; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyStartTime = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyWeeklyFrequency; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyWeeklyFrequency = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyWeeklyFrequencyDays; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyWeeklyFrequencyDays = 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.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyYearlyFrequencyDayOfMonth; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationFrequencyYearlyFrequencyDayOfMonth = value ?? default(long); }

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

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

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IMigrationPair[] MigrationPair { get => ((Commvault.Powershell.Models.IManagePathsInternal)MigrationPairs).Pair; set => ((Commvault.Powershell.Models.IManagePathsInternal)MigrationPairs).Pair = value ?? null /* arrayOf */; }

        /// <summary>Backing field for <see cref="MigrationPairs" /> property.</summary>
        private Commvault.Powershell.Models.IManagePaths _migrationPairs;

        /// <summary>Define migration paths to ensure proper mapping</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IManagePaths MigrationPairs { get => (this._migrationPairs = this._migrationPairs ?? new Commvault.Powershell.Models.ManagePaths()); set => this._migrationPairs = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.ICreateBlackoutWindow[] MigrationSettingMigrationWindow { get => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationWindow; set => ((Commvault.Powershell.Models.IMigrationSettingsInternal)MigrationSettings).MigrationWindow = value ?? null /* arrayOf */; }

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

        /// <summary>Backing field for <see cref="MigrationSettings" /> property.</summary>
        private Commvault.Powershell.Models.IMigrationSettings _migrationSettings;

        /// <summary>Name the migration group and define the frequency</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IMigrationSettings MigrationSettings { get => (this._migrationSettings = this._migrationSettings ?? new Commvault.Powershell.Models.MigrationSettings()); set => this._migrationSettings = value; }

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

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

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

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

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

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

        /// <summary>Backing field for <see cref="Source" /> property.</summary>
        private Commvault.Powershell.Models.IMigrationSource _source;

        /// <summary>Source of the migration NAS data</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IMigrationSource Source { get => (this._source = this._source ?? new Commvault.Powershell.Models.MigrationSource()); set => this._source = value; }

        /// <summary>Access nodes for source clients</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IAccessNodes[] SourceAccessNode { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).AccessNode; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).AccessNode = value ?? null /* arrayOf */; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SourceCredentialsId { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentialsId; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentialsId = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceCredentialsName { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentialsName; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceCredentialsName = value ?? null; }

        /// <summary>NAS filer name</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceName { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceName; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).SourceName = value ?? null; }

        /// <summary>NAS type</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceNasType { get => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).NasType; set => ((Commvault.Powershell.Models.IMigrationSourceInternal)Source).NasType = value ?? null; }

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? StartAnalysisNow { get => this._startAnalysisNow; set => this._startAnalysisNow = value; }

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

        }
    }
    /// Configuration for Migration to Azure
    public partial interface IMigrationConfiguration :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>Access nodes for the destination client</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Access nodes for the destination client",
        SerializedName = @"accessNode",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IAccessNodes) })]
        Commvault.Powershell.Models.IAccessNodes[] DestinationAccessNode { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string DestinationCredentialsName { get; set; }
        /// <summary>Azure storage account</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Azure storage account",
        SerializedName = @"destinationName",
        PossibleTypes = new [] { typeof(string) })]
        string DestinationName { get; set; }
        /// <summary>Kick off migration immediately?</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Kick off migration immediately?",
        SerializedName = @"kickOffMigrationImmediately",
        PossibleTypes = new [] { typeof(bool) })]
        bool? KickOffMigrationImmediately { get; set; }
        /// <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 = @"pair",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IMigrationPair) })]
        Commvault.Powershell.Models.IMigrationPair[] MigrationPair { get; set; }

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"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>Access nodes for source clients</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Access nodes for source clients",
        SerializedName = @"accessNode",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IAccessNodes) })]
        Commvault.Powershell.Models.IAccessNodes[] SourceAccessNode { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SourceCredentialsName { get; set; }
        /// <summary>NAS filer name</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"NAS filer name",
        SerializedName = @"sourceName",
        PossibleTypes = new [] { typeof(string) })]
        string SourceName { get; set; }
        /// <summary>NAS type</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"NAS type",
        SerializedName = @"NASType",
        PossibleTypes = new [] { typeof(string) })]
        string SourceNasType { get; set; }

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

    }
    /// Configuration for Migration to Azure
    internal partial interface IMigrationConfigurationInternal

    {
        /// <summary>
        /// Specify node with write access to Azure File share. The destincation type (NFS/CIFS) is determined by source.
        /// </summary>
        Commvault.Powershell.Models.IMigrationDestination Destination { get; set; }
        /// <summary>Access nodes for the destination client</summary>
        Commvault.Powershell.Models.IAccessNodes[] DestinationAccessNode { get; set; }

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

        long? DestinationCredentialsId { get; set; }

        string DestinationCredentialsName { get; set; }
        /// <summary>Azure storage account</summary>
        string DestinationName { get; set; }

        Commvault.Powershell.Models.IIdName DestinationRegion { get; set; }
        /// <summary>Kick off migration immediately?</summary>
        bool? KickOffMigrationImmediately { 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.IMigrationPair[] MigrationPair { get; set; }
        /// <summary>Define migration paths to ensure proper mapping</summary>
        Commvault.Powershell.Models.IManagePaths MigrationPairs { get; set; }
        /// <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 MigrationSettingMigrationFrequency { get; set; }

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

        string MigrationSettingName { get; set; }
        /// <summary>Name the migration group and define the frequency</summary>
        Commvault.Powershell.Models.IMigrationSettings MigrationSettings { get; set; }

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

        long? PlanId { get; set; }

        string PlanName { get; set; }

        long? RegionId { get; set; }

        string RegionName { get; set; }
        /// <summary>Source of the migration NAS data</summary>
        Commvault.Powershell.Models.IMigrationSource Source { get; set; }
        /// <summary>Access nodes for source clients</summary>
        Commvault.Powershell.Models.IAccessNodes[] SourceAccessNode { get; set; }

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

        long? SourceCredentialsId { get; set; }

        string SourceCredentialsName { get; set; }
        /// <summary>NAS filer name</summary>
        string SourceName { get; set; }
        /// <summary>NAS type</summary>
        string SourceNasType { get; set; }

        bool? StartAnalysisNow { get; set; }

    }
}