/// <summary>
 /// Initializes a new instance of the <see cref="SnapshotReplicationCopyPolicy" /> class.
 /// </summary>
 /// <param name="id">Specified the Id for a snapshot copy policy. This is generated when the policy is created..</param>
 /// <param name="cloudTarget">cloudTarget.</param>
 /// <param name="copyPartial">Specifies if Snapshots are copied from the first completely successful Job Run or the first partially successful Job Run occurring at the start of the replication schedule. If true, Snapshots are copied from the first Job Run occurring at the start of the replication schedule, even if first Job Run was not completely successful i.e. Snapshots were not captured for all Objects in the Job. If false, Snapshots are copied from the first Job Run occurring at the start of the replication schedule that was completely successful i.e. Snapshots for all the Objects in the Job were successfully captured..</param>
 /// <param name="daysToKeep">Specifies the number of days to retain copied Snapshots on the target..</param>
 /// <param name="multiplier">Specifies a factor to multiply the periodicity by, to determine the copy schedule. For example if set to 2 and the periodicity is hourly, then Snapshots from the first eligible Job Run for every 2 hour period is copied..</param>
 /// <param name="periodicity">Specifies the frequency that Snapshots should be copied to the specified target. Used in combination with multiplier. &#39;kEvery&#39; means that the Snapshot copy occurs after the number of Job Runs equals the number specified in the multiplier. &#39;kHour&#39; means that the Snapshot copy occurs hourly at the frequency set in the multiplier, for example if multiplier is 2, the copy occurs every 2 hours. &#39;kDay&#39; means that the Snapshot copy occurs daily at the frequency set in the multiplier. &#39;kWeek&#39; means that the Snapshot copy occurs weekly at the frequency set in the multiplier. &#39;kMonth&#39; means that the Snapshot copy occurs monthly at the frequency set in the multiplier. &#39;kYear&#39; means that the Snapshot copy occurs yearly at the frequency set in the multiplier..</param>
 /// <param name="target">Specifies the replication target to copy the Snapshots to..</param>
 public SnapshotReplicationCopyPolicy(string id = default(string), CloudDeployTargetDetails cloudTarget = default(CloudDeployTargetDetails), bool?copyPartial = default(bool?), long?daysToKeep = default(long?), int?multiplier = default(int?), PeriodicityEnum?periodicity = default(PeriodicityEnum?), ReplicationTargetSettings target = default(ReplicationTargetSettings))
 {
     this.Id          = id;
     this.CopyPartial = copyPartial;
     this.DaysToKeep  = daysToKeep;
     this.Multiplier  = multiplier;
     this.Periodicity = periodicity;
     this.Target      = target;
     this.Id          = id;
     this.CloudTarget = cloudTarget;
     this.CopyPartial = copyPartial;
     this.DaysToKeep  = daysToKeep;
     this.Multiplier  = multiplier;
     this.Periodicity = periodicity;
     this.Target      = target;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="RunJobSnapshotTarget" /> class.
 /// </summary>
 /// <param name="archivalTarget">archivalTarget.</param>
 /// <param name="cloudReplicationTarget">cloudReplicationTarget.</param>
 /// <param name="daysToKeep">Specifies the number of days to retain copied Snapshots on the target..</param>
 /// <param name="holdForLegalPurpose">Specifies optionally whether to retain the snapshot for legal purpose. If set to true, the run cannot be deleted until the retention period. Note that using this option may cause the Cluster to run out of space. If set to false explicitly, the hold is removed, and the run will expire as specified in the policy of the Protection Job. If this field is not specified, there is no change to the hold of the run. This field can be set only by a User having Data Security Role..</param>
 /// <param name="replicationTarget">replicationTarget.</param>
 /// <param name="type">Specifies the type of a Snapshot target such as &#39;kLocal&#39;, &#39;kRemote&#39; or &#39;kArchival&#39;. &#39;kLocal&#39; means the Snapshot is stored on a local Cohesity Cluster. &#39;kRemote&#39; means the Snapshot is stored on a Remote Cohesity Cluster. (It was copied to the Remote Cohesity Cluster using replication.) &#39;kArchival&#39; means the Snapshot is stored on a Archival External Target (such as Tape or AWS). &#39;kCloudDeploy&#39; means the Snapshot is stored on a Cloud platform..</param>
 public RunJobSnapshotTarget(ArchivalExternalTarget archivalTarget = default(ArchivalExternalTarget), CloudDeployTargetDetails cloudReplicationTarget = default(CloudDeployTargetDetails), long?daysToKeep = default(long?), bool?holdForLegalPurpose = default(bool?), ReplicationTargetSettings replicationTarget = default(ReplicationTargetSettings), TypeEnum?type = default(TypeEnum?))
 {
     this.DaysToKeep          = daysToKeep;
     this.HoldForLegalPurpose = holdForLegalPurpose;
     this.Type                   = type;
     this.ArchivalTarget         = archivalTarget;
     this.CloudReplicationTarget = cloudReplicationTarget;
     this.DaysToKeep             = daysToKeep;
     this.HoldForLegalPurpose    = holdForLegalPurpose;
     this.ReplicationTarget      = replicationTarget;
     this.Type                   = type;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SnapshotReplicationCopyPolicy" /> class.
 /// </summary>
 /// <param name="copyPartial">Specifies if Snapshots are copied from the first completely successful Job Run or the first partially successful Job Run occurring at the start of the replication schedule. If true, Snapshots are copied from the first Job Run occurring at the start of the replication schedule, even if first Job Run was not completely successful i.e. Snapshots were not captured for all Objects in the Job. If false, Snapshots are copied from the first Job Run occurring at the start of the replication schedule that was completely successful i.e. Snapshots for all the Objects in the Job were successfully captured..</param>
 /// <param name="daysToKeep">Specifies the number of days to retain copied Snapshots on the target..</param>
 /// <param name="multiplier">Specifies a factor to multiply the periodicity by, to determine the copy schedule. For example if set to 2 and the periodicity is hourly, then Snapshots from the first eligible Job Run for every 2 hour period is copied..</param>
 /// <param name="periodicity">Specifies the frequency that Snapshots should be copied to the specified target. Used in combination with multipiler. &#39;kEvery&#39; means that the Snapshot copy occurs after the number of Job Runs equals the number specified in the multiplier. &#39;kHour&#39; means that the Snapshot copy occurs hourly at the frequency set in the multiplier, for example if multiplier is 2, the copy occurs every 2 hours. &#39;kDay&#39; means that the Snapshot copy occurs daily at the frequency set in the multiplier. &#39;kWeek&#39; means that the Snapshot copy occurs weekly at the frequency set in the multiplier. &#39;kMonth&#39; means that the Snapshot copy occurs monthly at the frequency set in the multiplier. &#39;kYear&#39; means that the Snapshot copy occurs yearly at the frequency set in the multiplier..</param>
 /// <param name="target">Specifies the replication target to copy the Snapshots to..</param>
 public SnapshotReplicationCopyPolicy(bool?copyPartial = default(bool?), long?daysToKeep = default(long?), int?multiplier = default(int?), PeriodicityEnum?periodicity = default(PeriodicityEnum?), ReplicationTargetSettings target = default(ReplicationTargetSettings))
 {
     this.CopyPartial = copyPartial;
     this.DaysToKeep  = daysToKeep;
     this.Multiplier  = multiplier;
     this.Periodicity = periodicity;
     this.Target      = target;
     this.CopyPartial = copyPartial;
     this.DaysToKeep  = daysToKeep;
     this.Multiplier  = multiplier;
     this.Periodicity = periodicity;
     this.Target      = target;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SnapshotTargetSettings" /> class.
 /// </summary>
 /// <param name="archivalTarget">archivalTarget.</param>
 /// <param name="cloudReplicationTarget">cloudReplicationTarget.</param>
 /// <param name="replicationTarget">replicationTarget.</param>
 /// <param name="type">Specifies the type of a Snapshot target such as &#39;kLocal&#39;, &#39;kRemote&#39; or &#39;kArchival&#39;. &#39;kLocal&#39; means the Snapshot is stored on a local Cohesity Cluster. &#39;kRemote&#39; means the Snapshot is stored on a Remote Cohesity Cluster. (It was copied to the Remote Cohesity Cluster using replication.) &#39;kArchival&#39; means the Snapshot is stored on a Archival External Target (such as Tape or AWS). &#39;kCloudDeploy&#39; means the Snapshot is stored on a Cloud platform..</param>
 public SnapshotTargetSettings(ArchivalExternalTarget archivalTarget = default(ArchivalExternalTarget), CloudDeployTargetDetails cloudReplicationTarget = default(CloudDeployTargetDetails), ReplicationTargetSettings replicationTarget = default(ReplicationTargetSettings), TypeEnum?type = default(TypeEnum?))
 {
     this.Type                   = type;
     this.ArchivalTarget         = archivalTarget;
     this.CloudReplicationTarget = cloudReplicationTarget;
     this.ReplicationTarget      = replicationTarget;
     this.Type                   = type;
 }