# `ExAws.Behaviour`
[🔗](https://github.com/ex-aws/ex_aws/blob/v2.7.0/lib/ex_aws/behaviour.ex#L1)

A behaviour definition for the core operations of ExAws.

`ExAws` implements this behaviour.

# `request`

```elixir
@callback request(ExAws.Operation.t()) :: {:ok, term()} | {:error, term()}
```

See `ExAws.request/2`.

# `request`

```elixir
@callback request(ExAws.Operation.t(), Keyword.t()) :: {:ok, term()} | {:error, term()}
```

See `ExAws.request/2`.

# `request!`

```elixir
@callback request!(ExAws.Operation.t()) :: term() | no_return()
```

See `ExAws.request!/2`.

# `request!`

```elixir
@callback request!(ExAws.Operation.t(), Keyword.t()) :: term() | no_return()
```

See `ExAws.request!/2`.

# `stream!`

```elixir
@callback stream!(ExAws.Operation.t()) :: Enumerable.t()
```

See `ExAws.stream!/2`.

# `stream!`

```elixir
@callback stream!(ExAws.Operation.t(), Keyword.t()) :: Enumerable.t()
```

See `ExAws.stream!/2`.

---

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