azure-functions-openapi-extension
azure-functions-openapi-extension copied to clipboard
Type of TimeSpan incorrectly inferred as complex object instead of string
Describe the issue
The type that is inferred for a TimeSpan is a complex object. Instead, I would expect a string (something like 1.00:00:00).
A simple HttpTrigger that returns an OkObjectResult serializes a TimeSpan to a string, whereas the extension resolves a complex object for its schema definition. If I am correct, the OkObjectResult uses the Newtonsoft.Json serializer.
I tried to 'override' it using a JsonConverter attribute, but that does not work. Neither does adding [DataType(DataType.Duration)].
To Reproduce See this demonstration project: https://github.com/basilfx/azure-functions-openapi-function-timespan
Expected behavior
TimeSpan schema type is inferred as a string.
Screenshots Note how the result is different from the example schema.
Environment (please complete the following information, if applicable):
- OS: macOS
- Azure Functions v4
- .NET SDK 6.0.102
- OpenAPI Extension 1.2.0
@basilfx Thanks for the issue! Did you mean the TimeSpan instance should look like this?
https://dotnetfiddle.net/tyLTMW
I mean the TimeSpan instance is serialised like above (as a string value), so the OpenAPI document should also follow it?
Yes, that's what I would expect, and that is how Newtonsoft.Json (used by AF for serializing an IActionResult) serializes a TimeSpan by default.
I am also running into this issue. As I am generating a client, the deserialization will fail.
@justinyoo Any update on this issue? Anything I can do to help?
Did you by chance find a workaround/fix?