OpenAPI.NET icon indicating copy to clipboard operation
OpenAPI.NET copied to clipboard

Required attribute of non-required query parameters does not get rendered

Open jbroenstrup opened this issue 6 years ago • 2 comments

I am a bit confused concerning the openapi serialization.

This code

var document = new OpenApiDocument
{
    Components = new OpenApiComponents()
};
document.Components.Parameters.Add("foo",
    new OpenApiParameter()
    {
        Required = true,
        Name = "bar",
        In = ParameterLocation.Query
    });

using (var sw = new StringWriter())
{
    var writer = new OpenApiJsonWriter(sw);
    document.SerializeAsV3(writer);
    var openapiDefinition = sw.ToString();
    Console.WriteLine(openapiDefinition);
}

creates this openapi definition:

{
  "openapi": "3.0.1",
  "info": { },
  "paths": { },
  "components": {
    "parameters": {
      "foo": {
        "name": "bar",
        "in": "query",
        "required": true
      }
    }
  }
}

But if I set the parameter to be not required, the required property is missing from the openapi definition of the parameter entirely.

This is a problem, because the third party tool I am using to generate client code for this API depends on said required property to always being there, either true or false.

Is there a possibility to force the serialization to include the required property?

jbroenstrup avatar Oct 29 '19 08:10 jbroenstrup

Hmm, that's unfortunate. The required property is only required when the in property is set to path. http://spec.openapis.org/oas/v3.0.2#fixed-fields-9

What is the tool that you are using? Maybe we can convince them to fix their tool.

darrelmiller avatar Dec 29 '19 23:12 darrelmiller

I have encountered the same behavior even when in property is set to query. I believe that in that case the required property should ALWAYS be rendered. Microsoft.OpenApi version 1.2.3

davidkvc avatar May 17 '21 14:05 davidkvc