/// <summary>
 /// Initializes a new instance of the <see cref="CreateRegistrationSchema" /> class.
 /// </summary>
 /// <param name="courseId">courseId (required).</param>
 /// <param name="learner">learner (required).</param>
 /// <param name="registrationId">registrationId (required).</param>
 /// <param name="xapiRegistrationId">The xapiRegistrationId to be associated with this registration. If not specified, the system will assign an xapiRegistrationId. As per the xApi specification, this must be a UUID..</param>
 /// <param name="learnerTags">learnerTags.</param>
 /// <param name="courseTags">courseTags.</param>
 /// <param name="registrationTags">registrationTags.</param>
 /// <param name="postBack">Specifies an optional override URL for which to post activity and status data in real time as the course is completed. By default all of these settings are read from your configuration..</param>
 /// <param name="initialRegistrationState">initialRegistrationState.</param>
 /// <param name="initialSettings">initialSettings.</param>
 public CreateRegistrationSchema(string courseId = default(string), LearnerSchema learner = default(LearnerSchema), string registrationId = default(string), string xapiRegistrationId = default(string), List <string> learnerTags = default(List <string>), List <string> courseTags = default(List <string>), List <string> registrationTags = default(List <string>), PostBackSchema postBack = default(PostBackSchema), RegistrationSchema initialRegistrationState = default(RegistrationSchema), SettingsPostSchema initialSettings = default(SettingsPostSchema))
 {
     // to ensure "courseId" is required (not null)
     if (courseId == null)
     {
         throw new InvalidDataException("courseId is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.CourseId = courseId;
     }
     // to ensure "learner" is required (not null)
     if (learner == null)
     {
         throw new InvalidDataException("learner is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.Learner = learner;
     }
     // to ensure "registrationId" is required (not null)
     if (registrationId == null)
     {
         throw new InvalidDataException("registrationId is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.RegistrationId = registrationId;
     }
     this.XapiRegistrationId       = xapiRegistrationId;
     this.LearnerTags              = learnerTags;
     this.CourseTags               = courseTags;
     this.RegistrationTags         = registrationTags;
     this.PostBack                 = postBack;
     this.InitialRegistrationState = initialRegistrationState;
     this.InitialSettings          = initialSettings;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CreateRegistrationSchema" /> class.
 /// </summary>
 /// <param name="CourseId">CourseId (required).</param>
 /// <param name="Learner">Learner (required).</param>
 /// <param name="RegistrationId">RegistrationId (required).</param>
 /// <param name="XapiRegistrationId">The xapiRegistrationId to be associated with this registration. If not specified, the system will assign an xapiRegistrationId. As per the xApi specification, this must be a UUID..</param>
 /// <param name="LearnerTags">LearnerTags.</param>
 /// <param name="CourseTags">CourseTags.</param>
 /// <param name="RegistrationTags">RegistrationTags.</param>
 /// <param name="PostBack">Specifies an optional override URL for which to post activity and status data in real time as the course is completed. By default all of these settings are read from your configuration..</param>
 /// <param name="InitialRegistrationState">InitialRegistrationState.</param>
 /// <param name="InitialSettings">InitialSettings.</param>
 public CreateRegistrationSchema(string CourseId = default(string), LearnerSchema Learner = default(LearnerSchema), string RegistrationId = default(string), string XapiRegistrationId = default(string), List <string> LearnerTags = default(List <string>), List <string> CourseTags = default(List <string>), List <string> RegistrationTags = default(List <string>), PostBackSchema PostBack = default(PostBackSchema), RegistrationSchema InitialRegistrationState = default(RegistrationSchema), SettingsPostSchema InitialSettings = default(SettingsPostSchema))
 {
     // to ensure "CourseId" is required (not null)
     if (CourseId == null)
     {
         throw new InvalidDataException("CourseId is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.CourseId = CourseId;
     }
     // to ensure "Learner" is required (not null)
     if (Learner == null)
     {
         throw new InvalidDataException("Learner is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.Learner = Learner;
     }
     // to ensure "RegistrationId" is required (not null)
     if (RegistrationId == null)
     {
         throw new InvalidDataException("RegistrationId is a required property for CreateRegistrationSchema and cannot be null");
     }
     else
     {
         this.RegistrationId = RegistrationId;
     }
     this.XapiRegistrationId       = XapiRegistrationId;
     this.LearnerTags              = LearnerTags;
     this.CourseTags               = CourseTags;
     this.RegistrationTags         = RegistrationTags;
     this.PostBack                 = PostBack;
     this.InitialRegistrationState = InitialRegistrationState;
     this.InitialSettings          = InitialSettings;
 }