README.md

# OpenAPI Code Generation

Code generator that ingest a OpenAPI Specification and writes the structs that represent resources of that given specification and also builds the client based on the paths.

Currently supports two types of generation:

* [Tesla](https://hexdocs.pm/tesla/readme.html) - Generates a module with a Tesla client.
* [Req](https://hexdocs.pm/req/readme.html) - Generates a module using Req.

By default we're using Jason for encoding and decoding of structs

Does not require you to install extra dependencies as we're using

## Roadmap

- [ ] Support YAML specification parsing
- [ ] Support Inheritance and Polymorphism
- [ ] Add typespecs to generated Structs
- [ ] Add typespecs to Client
- [ ] Generate tests for Client

## Installation

Install it using:

```sh
mix do local.rebar --force, local.hex --force
mix escript.install hex openapi_codegen
```

## Usage

Generating a Tesla client using PetStore example:

`openapi_codegen --tesla --output-path lib openapi_petstore.json`

Generating a Req client using PetStore example:

`openapi_codegen --req --output-path lib openapi_petstore.json`

This examples will generate your code in your folder `lib` and also create a `lib/components` with all the structs.

Learn more on how to use it with `openapi_codegen --help`.