# `Infusion.Runtime`
[🔗](https://github.com/mandar1045/infusion/blob/v0.1.0/runtime/lib/infusion/runtime.ex#L1)

The behaviour every SDK generated by Infusion shares.

A generated SDK keeps each API operation as data and hands it here:

  * `Infusion.Runtime.Request`: sends a call, with retries, and decodes
    the response; `Infusion.Runtime.Request.stream/5` for Server-Sent
    Events
  * `Infusion.Runtime.Paginate`: every item of a list operation, as a lazy
    stream
  * `Infusion.Runtime.Config`: settings, layered from the SDK's defaults,
    your config and the call
  * `Infusion.Runtime.Error`: the one error type every SDK returns
  * `Infusion.Runtime.Schema`: decoding JSON into the SDK's structs
  * `Infusion.Runtime.Form` and `Infusion.Runtime.SSE`: form encoding and
    event-stream parsing

You rarely call these yourself; the SDK's generated functions do.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
