# `Codat.HTTP.Client`
[🔗](https://github.com/iamkanishka/codat.git/blob/v1.0.0/lib/codat/http/client.ex#L17)

Low-level HTTP client for the Codat API, built on `Req` + `Finch`.

Handles authentication, retries, rate-limit awareness, telemetry, and
structured `%Codat.Error{}` on all failure paths.
Internal — use the high-level solution API modules instead.

# `method`

```elixir
@type method() :: :get | :post | :put | :patch | :delete
```

# `response`

```elixir
@type response() :: {:ok, map() | list() | binary() | nil} | {:error, Codat.Error.t()}
```

# `delete`

```elixir
@spec delete(Codat.Config.t(), String.t(), keyword()) :: response()
```

Performs a DELETE request.

# `get`

```elixir
@spec get(Codat.Config.t(), String.t(), keyword()) :: response()
```

Performs a GET request.

# `patch`

```elixir
@spec patch(Codat.Config.t(), String.t(), map(), keyword()) :: response()
```

Performs a PATCH request.

# `post`

```elixir
@spec post(Codat.Config.t(), String.t(), map() | list() | binary(), keyword()) ::
  response()
```

Performs a POST request.

# `put`

```elixir
@spec put(Codat.Config.t(), String.t(), map() | list(), keyword()) :: response()
```

Performs a PUT request.

---

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