/// <summary>
 /// Initializes a new instance of the <see cref="Site" /> class.
 /// </summary>
 /// <param name="Name">The name of the entity. (required).</param>
 /// <param name="Description">The resource&#39;s description..</param>
 /// <param name="Version">The current version of the resource..</param>
 /// <param name="DateCreated">The date the resource was created. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ.</param>
 /// <param name="DateModified">The date of the last modification to the resource. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ.</param>
 /// <param name="ModifiedBy">The ID of the user that last modified the resource..</param>
 /// <param name="CreatedBy">The ID of the user that created the resource..</param>
 /// <param name="ModifiedByApp">The application that last modified the resource..</param>
 /// <param name="CreatedByApp">The application that created the resource..</param>
 /// <param name="PrimarySites">PrimarySites.</param>
 /// <param name="SecondarySites">SecondarySites.</param>
 /// <param name="PrimaryEdges">PrimaryEdges.</param>
 /// <param name="SecondaryEdges">SecondaryEdges.</param>
 /// <param name="Addresses">Addresses.</param>
 /// <param name="Edges">Edges.</param>
 /// <param name="EdgeAutoUpdateConfig">Recurrance rule, time zone, and start/end settings for automatic edge updates for this site.</param>
 /// <param name="Location">Location (required).</param>
 /// <param name="Managed">Managed.</param>
 /// <param name="NtpSettings">Network Time Protocol settings for the site.</param>
 public Site(string Name = null, string Description = null, int?Version = null, DateTime?DateCreated = null, DateTime?DateModified = null, string ModifiedBy = null, string CreatedBy = null, string ModifiedByApp = null, string CreatedByApp = null, List <UriReference> PrimarySites = null, List <UriReference> SecondarySites = null, List <Edge> PrimaryEdges = null, List <Edge> SecondaryEdges = null, List <Contact> Addresses = null, List <Edge> Edges = null, EdgeAutoUpdateConfig EdgeAutoUpdateConfig = null, LocationDefinition Location = null, bool?Managed = null, NTPSettings NtpSettings = null)
 {
     this.Name                 = Name;
     this.Description          = Description;
     this.Version              = Version;
     this.DateCreated          = DateCreated;
     this.DateModified         = DateModified;
     this.ModifiedBy           = ModifiedBy;
     this.CreatedBy            = CreatedBy;
     this.ModifiedByApp        = ModifiedByApp;
     this.CreatedByApp         = CreatedByApp;
     this.PrimarySites         = PrimarySites;
     this.SecondarySites       = SecondarySites;
     this.PrimaryEdges         = PrimaryEdges;
     this.SecondaryEdges       = SecondaryEdges;
     this.Addresses            = Addresses;
     this.Edges                = Edges;
     this.EdgeAutoUpdateConfig = EdgeAutoUpdateConfig;
     this.Location             = Location;
     this.Managed              = Managed;
     this.NtpSettings          = NtpSettings;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Site" /> class.
 /// </summary>
 /// <param name="Name">The name of the entity. (required).</param>
 /// <param name="Division">The division to which this entity belongs..</param>
 /// <param name="Description">The resource's description..</param>
 /// <param name="Version">The current version of the resource..</param>
 /// <param name="DateCreated">The date the resource was created. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss[.mmm]Z.</param>
 /// <param name="DateModified">The date of the last modification to the resource. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss[.mmm]Z.</param>
 /// <param name="ModifiedBy">The ID of the user that last modified the resource..</param>
 /// <param name="CreatedBy">The ID of the user that created the resource..</param>
 /// <param name="ModifiedByApp">The application that last modified the resource..</param>
 /// <param name="CreatedByApp">The application that created the resource..</param>
 /// <param name="PrimarySites">PrimarySites.</param>
 /// <param name="SecondarySites">SecondarySites.</param>
 /// <param name="PrimaryEdges">PrimaryEdges.</param>
 /// <param name="SecondaryEdges">SecondaryEdges.</param>
 /// <param name="Addresses">Addresses.</param>
 /// <param name="Edges">Edges.</param>
 /// <param name="EdgeAutoUpdateConfig">Recurrance rule, time zone, and start/end settings for automatic edge updates for this site.</param>
 /// <param name="MediaRegionsUseLatencyBased">MediaRegionsUseLatencyBased.</param>
 /// <param name="Location">Location (required).</param>
 /// <param name="Managed">Managed.</param>
 /// <param name="NtpSettings">Network Time Protocol settings for the site.</param>
 /// <param name="MediaModel">Media model for the site.</param>
 /// <param name="CoreSite">Is this site a core site.</param>
 /// <param name="SiteConnections">The site connections.</param>
 public Site(string Name = null, Division Division = null, string Description = null, int?Version = null, DateTime?DateCreated = null, DateTime?DateModified = null, string ModifiedBy = null, string CreatedBy = null, string ModifiedByApp = null, string CreatedByApp = null, List <DomainEntityRef> PrimarySites = null, List <DomainEntityRef> SecondarySites = null, List <Edge> PrimaryEdges = null, List <Edge> SecondaryEdges = null, List <Contact> Addresses = null, List <Edge> Edges = null, EdgeAutoUpdateConfig EdgeAutoUpdateConfig = null, bool?MediaRegionsUseLatencyBased = null, LocationDefinition Location = null, bool?Managed = null, NTPSettings NtpSettings = null, MediaModelEnum?MediaModel = null, bool?CoreSite = null, List <SiteConnection> SiteConnections = null)
 {
     this.Name                        = Name;
     this.Division                    = Division;
     this.Description                 = Description;
     this.Version                     = Version;
     this.DateCreated                 = DateCreated;
     this.DateModified                = DateModified;
     this.ModifiedBy                  = ModifiedBy;
     this.CreatedBy                   = CreatedBy;
     this.ModifiedByApp               = ModifiedByApp;
     this.CreatedByApp                = CreatedByApp;
     this.PrimarySites                = PrimarySites;
     this.SecondarySites              = SecondarySites;
     this.PrimaryEdges                = PrimaryEdges;
     this.SecondaryEdges              = SecondaryEdges;
     this.Addresses                   = Addresses;
     this.Edges                       = Edges;
     this.EdgeAutoUpdateConfig        = EdgeAutoUpdateConfig;
     this.MediaRegionsUseLatencyBased = MediaRegionsUseLatencyBased;
     this.Location                    = Location;
     this.Managed                     = Managed;
     this.NtpSettings                 = NtpSettings;
     this.MediaModel                  = MediaModel;
     this.CoreSite                    = CoreSite;
     this.SiteConnections             = SiteConnections;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="Site" /> class.
        /// </summary>



        /// <param name="Name">The name of the entity. (required).</param>



        /// <param name="Description">The resource&#39;s description..</param>



        /// <param name="Version">The current version of the resource..</param>



        /// <param name="DateCreated">The date the resource was created. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ.</param>



        /// <param name="DateModified">The date of the last modification to the resource. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ.</param>



        /// <param name="ModifiedBy">The ID of the user that last modified the resource..</param>



        /// <param name="CreatedBy">The ID of the user that created the resource..</param>



        /// <param name="ModifiedByApp">The application that last modified the resource..</param>



        /// <param name="CreatedByApp">The application that created the resource..</param>



        /// <param name="PrimarySites">PrimarySites.</param>



        /// <param name="SecondarySites">SecondarySites.</param>



        /// <param name="PrimaryEdges">PrimaryEdges.</param>



        /// <param name="SecondaryEdges">SecondaryEdges.</param>



        /// <param name="Addresses">Addresses.</param>



        /// <param name="Edges">Edges.</param>



        /// <param name="EdgeAutoUpdateConfig">Recurrance rule, time zone, and start/end settings for automatic edge updates for this site.</param>



        /// <param name="Location">Location (required).</param>



        /// <param name="Managed">Managed.</param>



        /// <param name="NtpSettings">Network Time Protocol settings for the site.</param>



        public Site(string Name = null, string Description = null, int?Version = null, DateTime?DateCreated = null, DateTime?DateModified = null, string ModifiedBy = null, string CreatedBy = null, string ModifiedByApp = null, string CreatedByApp = null, List <UriReference> PrimarySites = null, List <UriReference> SecondarySites = null, List <Edge> PrimaryEdges = null, List <Edge> SecondaryEdges = null, List <Contact> Addresses = null, List <Edge> Edges = null, EdgeAutoUpdateConfig EdgeAutoUpdateConfig = null, LocationDefinition Location = null, bool?Managed = null, NTPSettings NtpSettings = null)
        {
            // to ensure "Name" is required (not null)
            if (Name == null)
            {
                throw new InvalidDataException("Name is a required property for Site and cannot be null");
            }
            else
            {
                this.Name = Name;
            }



            // to ensure "Location" is required (not null)
            if (Location == null)
            {
                throw new InvalidDataException("Location is a required property for Site and cannot be null");
            }
            else
            {
                this.Location = Location;
            }



            this.Description = Description;



            this.Version = Version;



            this.DateCreated = DateCreated;



            this.DateModified = DateModified;



            this.ModifiedBy = ModifiedBy;



            this.CreatedBy = CreatedBy;



            this.ModifiedByApp = ModifiedByApp;



            this.CreatedByApp = CreatedByApp;



            this.PrimarySites = PrimarySites;



            this.SecondarySites = SecondarySites;



            this.PrimaryEdges = PrimaryEdges;



            this.SecondaryEdges = SecondaryEdges;



            this.Addresses = Addresses;



            this.Edges = Edges;



            this.EdgeAutoUpdateConfig = EdgeAutoUpdateConfig;



            this.Managed = Managed;



            this.NtpSettings = NtpSettings;
        }