# `ExUtcp.Transports.Graphql.Pool`
[🔗](https://github.com/universal-tool-calling-protocol/elixir-utcp/blob/main/lib/ex_utcp/transports/graphql/pool.ex#L1)

Manages a pool of GraphQL connections with lifecycle management.

# `t`

```elixir
@type t() :: %ExUtcp.Transports.Graphql.Pool{
  cleanup_interval: timeout(),
  connection_timeout: timeout(),
  connections: %{required(String.t()) =&gt; pid()},
  max_connections: non_neg_integer(),
  max_idle_time: timeout()
}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `close_all_connections`

```elixir
@spec close_all_connections() :: :ok
```

Closes all connections.

# `close_connection`

```elixir
@spec close_connection(pid()) :: :ok
```

Closes a specific connection.

# `get_connection`

```elixir
@spec get_connection(map()) :: {:ok, pid()} | {:error, term()}
```

Gets or creates a connection for the given provider.

# `return_connection`

```elixir
@spec return_connection(pid()) :: :ok
```

Returns a connection to the pool.

# `start_link`

```elixir
@spec start_link(keyword()) :: {:ok, pid()} | {:error, term()}
```

Starts the connection pool.

# `stats`

```elixir
@spec stats() :: map()
```

Gets pool statistics.

---

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