# infusion v0.1.0 - API Reference

## Modules

- [Infusion](Infusion.md): Generates Elixir SDKs from OpenAPI specs.
- [Infusion.Gen.Operations](Infusion.Gen.Operations.md): Generates one module per resource with one function per operation.
- [Infusion.Gen.Pagination](Infusion.Gen.Pagination.md): Works out how a list operation pages, from its parameters and response.
- [Infusion.Gen.Project](Infusion.Gen.Project.md): Generates the files around the API modules: the client module, `mix.exs`,
`.formatter.exs`, `.gitignore` and a README.

- [Infusion.Gen.Schemas](Infusion.Gen.Schemas.md): Generates one module per named schema.
- [Infusion.IR](Infusion.IR.md): The intermediate representation: what the code generator reads, instead of
the spec. Built from a document that went through `Infusion.Ref` and
`Infusion.Normalize`.
- [Infusion.IR.Body](Infusion.IR.Body.md): A request body: its preferred content type and the others accepted.
- [Infusion.IR.Field](Infusion.IR.Field.md): A property of an object schema.
- [Infusion.IR.Operation](Infusion.IR.Operation.md): One API call.
- [Infusion.IR.Param](Infusion.IR.Param.md): A path, query, header or cookie parameter.
- [Infusion.IR.Response](Infusion.IR.Response.md): A response for one status (or `:default`). `schema` is the body's schema
(JSON preferred); a response that can also stream (`text/event-stream`)
has `streaming?` set and the schema of each event in `stream_schema`.

- [Infusion.IR.Schema](Infusion.IR.Schema.md): A schema, classified.
- [Infusion.Naming](Infusion.Naming.md): Turns OpenAPI names into Elixir module and function names.
- [Infusion.Normalize](Infusion.Normalize.md): Rewrites the schemas of a resolved document (see `Infusion.Ref`) into one
canonical form, so the rest of the generator only ever sees one shape.
- [Infusion.Ref](Infusion.Ref.md): Resolves `$ref`s in an OpenAPI document.
- [Infusion.Spec](Infusion.Spec.md): Loads an OpenAPI document from a file or a URL.

## Mix Tasks

- [mix infusion.gen](Mix.Tasks.Infusion.Gen.md): Generates an Elixir SDK, as a Mix project, from an OpenAPI 3.0 or 3.1 spec.

