openapi-go
openapi-go copied to clipboard
Better discriminator support?
Hi there, thanks for this family of modules.
I'm using this module to generate schema near existing HTTP handler code (like a minimal version of swaggest/rest). Trying to use oneOf in a request body which works fine using JSONSchemaOneOf. But I can't seem to crack an easy or straightforward way to set discriminator
as described here.
I see that Schema has Discriminator on it but I'm not quite sure how to get there from something like this.
I tried implementing jsonschema.Preparer and Exposer but don't think I can influence discriminator that way.
Assuming I'm not missing something (apologies if I am!), would some better support for this be good? I could see discriminator
tag support somewhere to set propertyName
. But it would probably also be good to support mapping
as well.
Happy to try putting a PR together if there's a direction you'd like to go.
Thanks again!
If I dig into the spec after AddOperation I can do it in a roundabout way, eg:
c := ref.Spec.Components.Schemas.MapOfSchemaOrRefValues["SomethingUsingOneOf"]
c.Schema.WithDiscriminator(openapi3.Discriminator{PropertyName: "kind"})
But I have to know what name the component will end up with. And it would be nicer to do it closer to my handler and related types.