# tesla v1.17.0 - API Reference

## Modules

- [Tesla](Tesla.md): A HTTP toolkit for building API clients using middlewares.
- [Tesla.Client](Tesla.Client.md)
- [Tesla.Env](Tesla.Env.md): This module defines a `t:Tesla.Env.t/0` struct that stores all data related to request/response.
- [Tesla.Mock](Tesla.Mock.md): Mock adapter for better testing.
- [Tesla.Multipart](Tesla.Multipart.md): Multipart functionality.
- [Tesla.Multipart.Part](Tesla.Multipart.Part.md)
- [Tesla.Test](Tesla.Test.md): Provides utilities for testing Tesla-based HTTP clients.

- Behaviours
  - [Tesla.Adapter](Tesla.Adapter.md): The adapter specification.
  - [Tesla.Middleware](Tesla.Middleware.md): The middleware specification.

- Adapters
  - [Tesla.Adapter.Finch](Tesla.Adapter.Finch.md): Adapter for [finch](https://github.com/sneako/finch).
  - [Tesla.Adapter.Gun](Tesla.Adapter.Gun.md): Adapter for [gun](https://github.com/ninenines/gun).
  - [Tesla.Adapter.Hackney](Tesla.Adapter.Hackney.md): Adapter for [hackney](https://github.com/benoitc/hackney).
  - [Tesla.Adapter.Httpc](Tesla.Adapter.Httpc.md): Adapter for [httpc](http://erlang.org/doc/man/httpc.html).
  - [Tesla.Adapter.Ibrowse](Tesla.Adapter.Ibrowse.md): Adapter for [ibrowse](https://github.com/cmullaparthi/ibrowse).
  - [Tesla.Adapter.Mint](Tesla.Adapter.Mint.md): Adapter for [mint](https://github.com/elixir-mint/mint).

- Middlewares
  - [Tesla.Middleware.BaseUrl](Tesla.Middleware.BaseUrl.md): Set base URL for all requests.
  - [Tesla.Middleware.BasicAuth](Tesla.Middleware.BasicAuth.md): Basic authentication middleware.
  - [Tesla.Middleware.BearerAuth](Tesla.Middleware.BearerAuth.md): Bearer authentication middleware.
  - [Tesla.Middleware.CompressRequest](Tesla.Middleware.CompressRequest.md): Only compress request.
  - [Tesla.Middleware.Compression](Tesla.Middleware.Compression.md): Compress requests and decompress responses.
  - [Tesla.Middleware.DecodeFormUrlencoded](Tesla.Middleware.DecodeFormUrlencoded.md)
  - [Tesla.Middleware.DecodeJson](Tesla.Middleware.DecodeJson.md): Decodes response body as JSON.
  - [Tesla.Middleware.DecodeMessagePack](Tesla.Middleware.DecodeMessagePack.md)
  - [Tesla.Middleware.DecodeRels](Tesla.Middleware.DecodeRels.md): Decode `Link` Hypermedia HTTP header into `opts[:rels]` field in response.
  - [Tesla.Middleware.DecompressResponse](Tesla.Middleware.DecompressResponse.md): Only decompress response.
  - [Tesla.Middleware.DigestAuth](Tesla.Middleware.DigestAuth.md): Digest access authentication middleware.
  - [Tesla.Middleware.EncodeFormUrlencoded](Tesla.Middleware.EncodeFormUrlencoded.md)
  - [Tesla.Middleware.EncodeJson](Tesla.Middleware.EncodeJson.md): Encodes request body as JSON.

  - [Tesla.Middleware.EncodeMessagePack](Tesla.Middleware.EncodeMessagePack.md)
  - [Tesla.Middleware.FollowRedirects](Tesla.Middleware.FollowRedirects.md): Follow HTTP 3xx redirects.
  - [Tesla.Middleware.FormUrlencoded](Tesla.Middleware.FormUrlencoded.md): Send request body as `application/x-www-form-urlencoded`.
  - [Tesla.Middleware.Fuse](Tesla.Middleware.Fuse.md): Circuit Breaker middleware using [fuse](https://github.com/jlouis/fuse).
  - [Tesla.Middleware.Headers](Tesla.Middleware.Headers.md): Set default headers for all requests
  - [Tesla.Middleware.JSON](Tesla.Middleware.JSON.md): Encode requests and decode responses as JSON.
  - [Tesla.Middleware.KeepRequest](Tesla.Middleware.KeepRequest.md): Store request URL, body, and headers into `:opts`.
  - [Tesla.Middleware.Logger](Tesla.Middleware.Logger.md): Log requests using Elixir's Logger.
  - [Tesla.Middleware.MessagePack](Tesla.Middleware.MessagePack.md): Encode requests and decode responses as MessagePack.
  - [Tesla.Middleware.MethodOverride](Tesla.Middleware.MethodOverride.md): Middleware that adds `X-HTTP-Method-Override` header with original request
method and sends the request as post.
  - [Tesla.Middleware.Opts](Tesla.Middleware.Opts.md): Set default opts for all requests.
  - [Tesla.Middleware.PathParams](Tesla.Middleware.PathParams.md): Use templated URLs with provided parameters in either Phoenix style (`:id`)
or OpenAPI style (`{id}`).
  - [Tesla.Middleware.Query](Tesla.Middleware.Query.md): Set default query params for all requests
  - [Tesla.Middleware.Retry](Tesla.Middleware.Retry.md): Retry using exponential backoff and full jitter.
  - [Tesla.Middleware.SSE](Tesla.Middleware.SSE.md): Decode Server Sent Events.
  - [Tesla.Middleware.Telemetry](Tesla.Middleware.Telemetry.md): Emits events using the `:telemetry` library to expose instrumentation.
  - [Tesla.Middleware.Timeout](Tesla.Middleware.Timeout.md): Timeout HTTP request after X milliseconds.

- Exceptions
  - [Tesla.Error](Tesla.Error.md)
  - [Tesla.Mock.Error](Tesla.Mock.Error.md)

