diff --git a/src/JsonSchema/UmbracoJsonSchemaGeneratorSettings.cs b/src/JsonSchema/UmbracoJsonSchemaGeneratorSettings.cs index 397188b74b..26af0faae2 100644 --- a/src/JsonSchema/UmbracoJsonSchemaGeneratorSettings.cs +++ b/src/JsonSchema/UmbracoJsonSchemaGeneratorSettings.cs @@ -1,5 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; using NJsonSchema.Generation; namespace JsonSchema @@ -14,12 +18,24 @@ namespace JsonSchema public UmbracoJsonSchemaGeneratorSettings() { AlwaysAllowAdditionalObjectProperties = true; - SerializerSettings = new JsonSerializerSettings(); + SerializerSettings = new JsonSerializerSettings() + { + ContractResolver = new WritablePropertiesOnlyResolver() + }; DefaultReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull; SchemaNameGenerator = new NamespacePrefixedSchemaNameGenerator(); SerializerSettings.Converters.Add(new StringEnumConverter()); IgnoreObsoleteProperties = true; GenerateExamples = true; } + + private class WritablePropertiesOnlyResolver : DefaultContractResolver + { + protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) + { + IList props = base.CreateProperties(type, memberSerialization); + return props.Where(p => p.Writable).ToList(); + } + } } }