openapi3-code-generator
How to use?
- install stack
stack install openapi3-code-generator
openapi3-code-generator my_specification.yml
An out
directory is created with the generated code. Hint you can use --output-dir
to specify another output directory.
You can use openapi3-code-generator --help
to list all CLI options.
Example package
In the folder example
is a package that uses the generated code from specifications/petstore.yml
.
You can run stack test
inside the example
directory to run the code, it calls the server "https://petstore.swagger.io/v2" with some sample data.
https://github.com/Haskell-OpenAPI-Code-Generator/Stripe-Haskell-Library uses this code generator to generate
a Stripe API client.
Documentation
The documentation for the code can be found at https://hackage.haskell.org/package/openapi3-code-generator
This package was created as part of a bachelor thesis. This thesis can be found here TODO.
Large specifications
For large specifications some modules (CyclicTypes.hs for example) can get pretty big. It may be necessary to use --fast
with stack build --fast
to build the code.
Module structure of the generated code.
All symbols are globally unique and are reexported in the module OpenAPI
(Module name can be changed with --module-name
).
To reduce compile time, the code is split up into multiple modules.
Mainly for every operation and for every schema.
Schemas with cyclic dependencies are are in the module OpenAPI.CyclicTypes
.
Troubleshooting naming conflicts
Naming conflicts can happen, sometimes a little manual adjustment is needed.
With the following options naming conflicts can be resolved.
property-type-suffix
response-type-suffix
response-body-type-suffix
request-body-type-suffix
use-numbered-variant-constructors
convert-to-camel-case