private void PopulatePrimativeSchema(JSchema schema, JsonContract contract, JsonProperty memberProperty, Required valueRequired) { Type nonNullableUnderlyingType = GetNonNullableUnderlyingType(contract); JSchemaType type = GetJSchemaType(contract.UnderlyingType, valueRequired); if (type != Constants.AnyType) { schema.Type = GetJSchemaType(contract.UnderlyingType, valueRequired); } if (JSchemaTypeHelpers.HasFlag(schema.Type, JSchemaType.String)) { if (AttributeHelpers.GetStringLength(memberProperty, out int minimumLength, out int maximumLength)) { schema.MinimumLength = minimumLength; schema.MaximumLength = maximumLength; } else { schema.MinimumLength = AttributeHelpers.GetMinLength(memberProperty); schema.MaximumLength = AttributeHelpers.GetMaxLength(memberProperty); } schema.Pattern = AttributeHelpers.GetPattern(memberProperty); schema.Format = AttributeHelpers.GetFormat(memberProperty); // no format specified, derive from type if (schema.Format == null) { if (nonNullableUnderlyingType == typeof(DateTime) || nonNullableUnderlyingType == typeof(DateTimeOffset)) { schema.Format = Constants.Formats.DateTime; } else if (nonNullableUnderlyingType == typeof(Uri)) { schema.Format = Constants.Formats.Uri; } } }