RicoSuter / NJsonSchema

JSON Schema reader, generator and validator for .NET
http://NJsonSchema.org
MIT License
1.4k stars 535 forks source link

Unable to generate C# types for GitHub's webhook schema #1392

Open JamieMagee opened 3 years ago

JamieMagee commented 3 years ago

I'm attempting to generate C# types for GitHub's webhook schema. There is no official schema, but they have been generated here, and I am specifically attempting to use this file.

Using the following code:

var schema = await JsonSchema.FromUrlAsync("https://unpkg.com/@octokit/webhooks-schemas@4.2.1/schema.json");
var settings = new CSharpGeneratorSettings
{
    Namespace = "Octokit.Webhooks"
};
var generator = new CSharpGenerator(schema, settings);
var file = generator.GenerateFile()

I get this code, which is a subset of the types in the JSON schema definition.

The JSON schema definition is using draft 7, and I have seen #574, so I assume it might be something to do with that?

RicoSuter commented 3 years ago

I think the main problem is that oneOf inheritance is not yet supported - only OpenAPI's allOf, which works in the "other" direction - i.e. with all of you specify the schemas which inherit from "this" schema, with allOf you define the base schema.

Implementing this in a nice and not breaking way is not simple, I tried it already twice ;-)

https://github.com/RicoSuter/NJsonSchema/pull/1295 https://github.com/RicoSuter/NJsonSchema/pull/1266

JamieMagee commented 3 years ago

Thanks for the explanation. Should I follow #13 for updates?