/// <summary>
 /// Initializes a new instance of the <see cref="EdFiLearningObjectiveLearningStandard" /> class.
 /// </summary>
 /// <param name="LearningStandardReference">LearningStandardReference (required).</param>
 public EdFiLearningObjectiveLearningStandard(EdFiLearningStandardReference LearningStandardReference = default(EdFiLearningStandardReference))
 {
     // to ensure "LearningStandardReference" is required (not null)
     if (LearningStandardReference == null)
     {
         throw new InvalidDataException("LearningStandardReference is a required property for EdFiLearningObjectiveLearningStandard and cannot be null");
     }
     else
     {
         this.LearningStandardReference = LearningStandardReference;
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EdFiLearningStandard" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="AcademicSubjects">An unordered collection of learningStandardAcademicSubjects. Subject area for the LearningStandard. (required).</param>
 /// <param name="GradeLevels">An unordered collection of learningStandardGradeLevels. The grade levels for the specific learning standard. (required).</param>
 /// <param name="LearningStandardId">The identifier for the specific learning standard (e.g., 111.15.3.1.A). (required).</param>
 /// <param name="ParentLearningStandardReference">ParentLearningStandardReference.</param>
 /// <param name="ContentStandard">ContentStandard.</param>
 /// <param name="CourseTitle">The official Course Title with which this learning standard is associated..</param>
 /// <param name="Description">The text of the statement. The textual content that either describes a specific competency such as \&quot;Apply the Pythagorean Theorem to determine unknown side lengths in right triangles in real-world and mathematical problems in two and three dimensions.\&quot; or describes a less granular group of competencies within the taxonomy of the standards document, e.g. \&quot;Understand and apply the Pythagorean Theorem,\&quot; or \&quot;Geometry\&quot;. (required).</param>
 /// <param name="IdentificationCodes">An unordered collection of learningStandardIdentificationCodes. A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a learning standard..</param>
 /// <param name="LearningStandardCategoryDescriptor">An additional classification of the type of a specific learning standard..</param>
 /// <param name="LearningStandardItemCode">A code designated by the promulgating body to identify the statement, e.g. 1.N.3 (usually not globally unique)..</param>
 /// <param name="_Namespace">Namespace for the LearningStandard. (required).</param>
 /// <param name="PrerequisiteLearningStandards">An unordered collection of learningStandardPrerequisiteLearningStandards. The unique identifier of a prerequisite learning standard item, a competency needed prior to learning this one. (Some items may have no prerequisites others may have one or more prerequisites. This should only be used to represent the immediate predecessors in a competency-based pathway, i.e. not prerequisites of prerequisites)..</param>
 /// <param name="SuccessCriteria">One or more statements that describes the criteria used by teachers and students to check for attainment of a learning standard. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the LearningStandard..</param>
 /// <param name="Uri">An unambiguous reference to the statement using a network-resolvable URI..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public EdFiLearningStandard(string Id = default(string), List <EdFiLearningStandardAcademicSubject> AcademicSubjects = default(List <EdFiLearningStandardAcademicSubject>), List <EdFiLearningStandardGradeLevel> GradeLevels = default(List <EdFiLearningStandardGradeLevel>), string LearningStandardId = default(string), EdFiLearningStandardReference ParentLearningStandardReference = default(EdFiLearningStandardReference), EdFiLearningStandardContentStandard ContentStandard = default(EdFiLearningStandardContentStandard), string CourseTitle = default(string), string Description = default(string), List <EdFiLearningStandardIdentificationCode> IdentificationCodes = default(List <EdFiLearningStandardIdentificationCode>), string LearningStandardCategoryDescriptor = default(string), string LearningStandardItemCode = default(string), string _Namespace = default(string), List <EdFiLearningStandardPrerequisiteLearningStandard> PrerequisiteLearningStandards = default(List <EdFiLearningStandardPrerequisiteLearningStandard>), string SuccessCriteria = default(string), string Uri = default(string), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "AcademicSubjects" is required (not null)
     if (AcademicSubjects == null)
     {
         throw new InvalidDataException("AcademicSubjects is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this.AcademicSubjects = AcademicSubjects;
     }
     // to ensure "GradeLevels" is required (not null)
     if (GradeLevels == null)
     {
         throw new InvalidDataException("GradeLevels is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this.GradeLevels = GradeLevels;
     }
     // to ensure "LearningStandardId" is required (not null)
     if (LearningStandardId == null)
     {
         throw new InvalidDataException("LearningStandardId is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this.LearningStandardId = LearningStandardId;
     }
     // to ensure "Description" is required (not null)
     if (Description == null)
     {
         throw new InvalidDataException("Description is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this.Description = Description;
     }
     // to ensure "_Namespace" is required (not null)
     if (_Namespace == null)
     {
         throw new InvalidDataException("_Namespace is a required property for EdFiLearningStandard and cannot be null");
     }
     else
     {
         this._Namespace = _Namespace;
     }
     this.ParentLearningStandardReference = ParentLearningStandardReference;
     this.ContentStandard     = ContentStandard;
     this.CourseTitle         = CourseTitle;
     this.IdentificationCodes = IdentificationCodes;
     this.LearningStandardCategoryDescriptor = LearningStandardCategoryDescriptor;
     this.LearningStandardItemCode           = LearningStandardItemCode;
     this.PrerequisiteLearningStandards      = PrerequisiteLearningStandards;
     this.SuccessCriteria = SuccessCriteria;
     this.Uri             = Uri;
     this.Etag            = Etag;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EdFiEducationContent" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="ContentIdentifier">A unique identifier for the EducationContent. (required).</param>
 /// <param name="LearningStandardReference">LearningStandardReference.</param>
 /// <param name="AdditionalAuthorsIndicator">Indicates whether there are additional un-named authors. In a research report, this is often marked by the abbreviation \&quot;et al\&quot;..</param>
 /// <param name="AppropriateGradeLevels">An unordered collection of educationContentAppropriateGradeLevels. Grade levels for which this education content is applicable-if omitted, considered generally applicable..</param>
 /// <param name="AppropriateSexes">An unordered collection of educationContentAppropriateSexes. Sexes for which this education content is applicable. If omitted, considered generally applicable..</param>
 /// <param name="Authors">An unordered collection of educationContentAuthors. The individual credited with the creation of the resource..</param>
 /// <param name="ContentClassDescriptor">The predominate type or kind characterizing the learning resource..</param>
 /// <param name="Cost">An amount that has to be paid or spent to buy or obtain the EducationContent..</param>
 /// <param name="CostRateDescriptor">The rate by which the cost applies..</param>
 /// <param name="DerivativeSourceEducationContents">An unordered collection of educationContentDerivativeSourceEducationContents. Relates the education content source to the education content..</param>
 /// <param name="DerivativeSourceLearningResourceMetadataURIs">An unordered collection of educationContentDerivativeSourceLearningResourceMetadataURIs. The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item..</param>
 /// <param name="DerivativeSourceURIs">An unordered collection of educationContentDerivativeSourceURIs. The URI (typical a URL) pointing to an education content item..</param>
 /// <param name="Description">An extended written representation of the education content..</param>
 /// <param name="InteractivityStyleDescriptor">The predominate mode of learning supported by the learning resource. Acceptable values are active, expositive, or mixed..</param>
 /// <param name="Languages">An unordered collection of educationContentLanguages. An indication of the languages in which the Education Content is designed..</param>
 /// <param name="LearningResourceMetadataURI">The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item..</param>
 /// <param name="_Namespace">Namespace for the EducationContent. (required).</param>
 /// <param name="PublicationDate">The date on which this content was first published..</param>
 /// <param name="PublicationYear">The year at which this content was first published..</param>
 /// <param name="Publisher">The organization credited with publishing the resource..</param>
 /// <param name="ShortDescription">A short description or name of the entity..</param>
 /// <param name="TimeRequired">Approximate or typical time it takes to work with or through this learning resource for the typical intended target audience..</param>
 /// <param name="UseRightsURL">The URL where the owner specifies permissions for using the resource..</param>
 /// <param name="Version">The version identifier for the content..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public EdFiEducationContent(string Id = default(string), string ContentIdentifier = default(string), EdFiLearningStandardReference LearningStandardReference = default(EdFiLearningStandardReference), bool?AdditionalAuthorsIndicator = default(bool?), List <EdFiEducationContentAppropriateGradeLevel> AppropriateGradeLevels = default(List <EdFiEducationContentAppropriateGradeLevel>), List <EdFiEducationContentAppropriateSex> AppropriateSexes = default(List <EdFiEducationContentAppropriateSex>), List <EdFiEducationContentAuthor> Authors = default(List <EdFiEducationContentAuthor>), string ContentClassDescriptor = default(string), double?Cost = default(double?), string CostRateDescriptor = default(string), List <EdFiEducationContentDerivativeSourceEducationContent> DerivativeSourceEducationContents = default(List <EdFiEducationContentDerivativeSourceEducationContent>), List <EdFiEducationContentDerivativeSourceLearningResourceMetadataURI> DerivativeSourceLearningResourceMetadataURIs = default(List <EdFiEducationContentDerivativeSourceLearningResourceMetadataURI>), List <EdFiEducationContentDerivativeSourceURI> DerivativeSourceURIs = default(List <EdFiEducationContentDerivativeSourceURI>), string Description = default(string), string InteractivityStyleDescriptor = default(string), List <EdFiEducationContentLanguage> Languages = default(List <EdFiEducationContentLanguage>), string LearningResourceMetadataURI = default(string), string _Namespace = default(string), DateTime?PublicationDate = default(DateTime?), int?PublicationYear = default(int?), string Publisher = default(string), string ShortDescription = default(string), string TimeRequired = default(string), string UseRightsURL = default(string), string Version = default(string), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiEducationContent and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "ContentIdentifier" is required (not null)
     if (ContentIdentifier == null)
     {
         throw new InvalidDataException("ContentIdentifier is a required property for EdFiEducationContent and cannot be null");
     }
     else
     {
         this.ContentIdentifier = ContentIdentifier;
     }
     // to ensure "_Namespace" is required (not null)
     if (_Namespace == null)
     {
         throw new InvalidDataException("_Namespace is a required property for EdFiEducationContent and cannot be null");
     }
     else
     {
         this._Namespace = _Namespace;
     }
     this.LearningStandardReference  = LearningStandardReference;
     this.AdditionalAuthorsIndicator = AdditionalAuthorsIndicator;
     this.AppropriateGradeLevels     = AppropriateGradeLevels;
     this.AppropriateSexes           = AppropriateSexes;
     this.Authors = Authors;
     this.ContentClassDescriptor = ContentClassDescriptor;
     this.Cost = Cost;
     this.CostRateDescriptor = CostRateDescriptor;
     this.DerivativeSourceEducationContents            = DerivativeSourceEducationContents;
     this.DerivativeSourceLearningResourceMetadataURIs = DerivativeSourceLearningResourceMetadataURIs;
     this.DerivativeSourceURIs         = DerivativeSourceURIs;
     this.Description                  = Description;
     this.InteractivityStyleDescriptor = InteractivityStyleDescriptor;
     this.Languages = Languages;
     this.LearningResourceMetadataURI = LearningResourceMetadataURI;
     this.PublicationDate             = PublicationDate;
     this.PublicationYear             = PublicationYear;
     this.Publisher        = Publisher;
     this.ShortDescription = ShortDescription;
     this.TimeRequired     = TimeRequired;
     this.UseRightsURL     = UseRightsURL;
     this.Version          = Version;
     this.Etag             = Etag;
 }