/// <summary>
        /// Initializes a new instance of the <see cref="DocumentDetail" /> class.
        /// </summary>
        /// <param name="name">name.</param>
        /// <param name="documentType">documentType.</param>
        /// <param name="fileSize">fileSize.</param>
        /// <param name="folder">folder.</param>
        /// <param name="status">status.</param>
        /// <param name="statusData">statusData (required).</param>
        /// <param name="assignee">assignee.</param>
        /// <param name="assignDate">assignDate.</param>
        /// <param name="assigneeData">assigneeData (required).</param>
        /// <param name="description">description.</param>
        /// <param name="title">title.</param>
        /// <param name="notes">notes (required).</param>
        public DocumentDetail(string name = default(string), string documentType = default(string), int fileSize = default(int), string folder = default(string), int?status = default(int?), DocumentDetailStatusData statusData = default(DocumentDetailStatusData), int?assignee = default(int?), DateTime?assignDate = default(DateTime?), DocumentDetailAssigneeData assigneeData = default(DocumentDetailAssigneeData), string description = default(string), string title = default(string), List <DocumentDetailNotes> notes = default(List <DocumentDetailNotes>))
        {
            this.Name         = name;
            this.DocumentType = documentType;
            this.Folder       = folder;
            this.Status       = status;
            // to ensure "statusData" is required (not null)
            if (statusData == null)
            {
                throw new InvalidDataException("statusData is a required property for DocumentDetail and cannot be null");
            }
            else
            {
                this.StatusData = statusData;
            }

            this.Assignee   = assignee;
            this.AssignDate = assignDate;
            // to ensure "assigneeData" is required (not null)
            if (assigneeData == null)
            {
                throw new InvalidDataException("assigneeData is a required property for DocumentDetail and cannot be null");
            }
            else
            {
                this.AssigneeData = assigneeData;
            }

            this.AssigneeData = assigneeData;
            this.Description  = description;
            this.Title        = title;
            // to ensure "notes" is required (not null)
            if (notes == null)
            {
                throw new InvalidDataException("notes is a required property for DocumentDetail and cannot be null");
            }
            else
            {
                this.Notes = notes;
            }

            this.Name         = name;
            this.DocumentType = documentType;
            this.FileSize     = fileSize;
            this.Folder       = folder;
            this.Status       = status;
            this.Assignee     = assignee;
            this.AssignDate   = assignDate;
            this.Description  = description;
            this.Title        = title;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DocumentTypeDetail" /> class.
        /// </summary>
        /// <param name="title">title (required).</param>
        /// <param name="code">Field codes must be lowercase, should start with a Latin letter, and contain  only Latin letters, digits, and underscores. (required).</param>
        /// <param name="searchFields">searchFields.</param>
        /// <param name="editorType">editorType.</param>
        /// <param name="createdBy">createdBy (required).</param>
        /// <param name="modifiedBy">modifiedBy (required).</param>
        /// <param name="metadata">metadata.</param>
        /// <param name="fieldsNumber">fieldsNumber (required).</param>
        /// <param name="managers">managers.</param>
        public DocumentTypeDetail(string title = default(string), string code = default(string), List <string> searchFields = default(List <string>), EditorTypeEnum?editorType = default(EditorTypeEnum?), DocumentDetailAssigneeData createdBy = default(DocumentDetailAssigneeData), DocumentDetailAssigneeData modifiedBy = default(DocumentDetailAssigneeData), Object metadata = default(Object), int fieldsNumber = default(int), List <int> managers = default(List <int>))
        {
            // to ensure "title" is required (not null)
            if (title == null)
            {
                throw new InvalidDataException("title is a required property for DocumentTypeDetail and cannot be null");
            }
            else
            {
                this.Title = title;
            }

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

            this.EditorType = editorType;
            // to ensure "createdBy" is required (not null)
            if (createdBy == null)
            {
                throw new InvalidDataException("createdBy is a required property for DocumentTypeDetail and cannot be null");
            }
            else
            {
                this.CreatedBy = createdBy;
            }

            this.CreatedBy = createdBy;
            // to ensure "modifiedBy" is required (not null)
            if (modifiedBy == null)
            {
                throw new InvalidDataException("modifiedBy is a required property for DocumentTypeDetail and cannot be null");
            }
            else
            {
                this.ModifiedBy = modifiedBy;
            }

            this.ModifiedBy = modifiedBy;
            this.Metadata   = metadata;
            // to ensure "fieldsNumber" is required (not null)
            if (fieldsNumber == null)
            {
                throw new InvalidDataException("fieldsNumber is a required property for DocumentTypeDetail and cannot be null");
            }
            else
            {
                this.FieldsNumber = fieldsNumber;
            }

            this.SearchFields = searchFields;
            this.EditorType   = editorType;
            this.Metadata     = metadata;
            this.Managers     = managers;
        }