> Now I just use JObject as the parameter and deserialize at the top of the controller method.
This might be worth fixing, you're paying a performance penalty by needing to do intermediary deserialization and by using the old Newtonsoft serializer (STJ is significantly more performant).
Request validation (ie with FluentValidation) would shake out any deserialization mistakes.
> I've also run into some ecosystem issues where the OpenAPI codegen was a bit lacking and wouldn't actually generate code that works
Try Microsoft's new Kiota generator, its works a lot better.
This might be worth fixing, you're paying a performance penalty by needing to do intermediary deserialization and by using the old Newtonsoft serializer (STJ is significantly more performant).
Request validation (ie with FluentValidation) would shake out any deserialization mistakes.
> I've also run into some ecosystem issues where the OpenAPI codegen was a bit lacking and wouldn't actually generate code that works
Try Microsoft's new Kiota generator, its works a lot better.