# `Lather.Client`
[🔗](https://github.com/awksedgreep/lather/blob/v1.0.49/lib/lather/client.ex#L1)

Main SOAP client interface.

This module provides the primary API for making SOAP requests.

# `t`

```elixir
@type t() :: %Lather.Client{endpoint: String.t(), options: keyword()}
```

# `call`

```elixir
@spec call(t(), atom() | String.t(), map(), keyword()) ::
  {:ok, any()} | {:error, any()}
```

Makes a SOAP request to the specified operation.

## Parameters

* `client` - The SOAP client
* `operation` - The SOAP operation name (atom or string)
* `params` - Parameters for the operation
* `options` - Request-specific options

## Examples

    iex> _client = Lather.Client.new("https://example.com/soap")
    iex> # This would make an actual HTTP request:
    iex> # Lather.Client.call(client, :get_user, %{id: 123})

# `new`

```elixir
@spec new(
  String.t(),
  keyword()
) :: t()
```

Creates a new SOAP client for the given endpoint.

## Options

* `:timeout` - Request timeout in milliseconds (default: 30_000)
* `:headers` - Additional HTTP headers to include with requests
* `:ssl` - SSL options for HTTPS connections

## Examples

    iex> _client = Lather.Client.new("https://example.com/soap")
    %Lather.Client{endpoint: "https://example.com/soap", options: []}

---

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