/// <summary>
        /// Initializes a new instance of the <see cref="ProjectList" /> class.
        /// </summary>
        /// <param name="name">name (required).</param>
        /// <param name="status">status.</param>
        /// <param name="statusData">statusData.</param>
        /// <param name="type">type.</param>
        /// <param name="typeData">typeData (required).</param>
        public ProjectList(string name = default(string), int status = default(int), ProjectListStatusData statusData = default(ProjectListStatusData), string type = default(string), ProjectListTypeData typeData = default(ProjectListTypeData))
        {
            // to ensure "name" is required (not null)
            if (name == null)
            {
                throw new InvalidDataException("name is a required property for ProjectList and cannot be null");
            }
            else
            {
                this.Name = name;
            }

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

            this.Status     = status;
            this.StatusData = statusData;
            this.Type       = type;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="UploadSessionDetailProject" /> class.
        /// </summary>
        /// <param name="name">name (required).</param>
        /// <param name="description">description.</param>
        /// <param name="sendEmailNotification">sendEmailNotification.</param>
        /// <param name="hideClauseReview">hideClauseReview.</param>
        /// <param name="status">status.</param>
        /// <param name="statusData">statusData.</param>
        /// <param name="owners">owners.</param>
        /// <param name="reviewers">reviewers.</param>
        /// <param name="superReviewers">superReviewers.</param>
        /// <param name="juniorReviewers">juniorReviewers.</param>
        /// <param name="type">type.</param>
        /// <param name="typeData">typeData (required).</param>
        public UploadSessionDetailProject(string name = default(string), string description = default(string), bool sendEmailNotification = default(bool), bool hideClauseReview = default(bool), int status = default(int), ProjectListStatusData statusData = default(ProjectListStatusData), List <int> owners = default(List <int>), List <int> reviewers = default(List <int>), List <int> superReviewers = default(List <int>), List <int> juniorReviewers = default(List <int>), string type = default(string), ProjectListTypeData typeData = default(ProjectListTypeData))
        {
            // to ensure "name" is required (not null)
            if (name == null)
            {
                throw new InvalidDataException("name is a required property for UploadSessionDetailProject and cannot be null");
            }
            else
            {
                this.Name = name;
            }

            this.Description = description;
            // to ensure "typeData" is required (not null)
            if (typeData == null)
            {
                throw new InvalidDataException("typeData is a required property for UploadSessionDetailProject and cannot be null");
            }
            else
            {
                this.TypeData = typeData;
            }

            this.Description           = description;
            this.SendEmailNotification = sendEmailNotification;
            this.HideClauseReview      = hideClauseReview;
            this.Status          = status;
            this.StatusData      = statusData;
            this.Owners          = owners;
            this.Reviewers       = reviewers;
            this.SuperReviewers  = superReviewers;
            this.JuniorReviewers = juniorReviewers;
            this.Type            = type;
        }