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

Behaviour for GraphQL connections to enable mocking in tests.

# `close`

```elixir
@callback close(pid()) :: :ok | {:error, term()}
```

# `get_last_used`

```elixir
@callback get_last_used(pid()) :: integer()
```

# `introspect_schema`

```elixir
@callback introspect_schema(pid(), opts :: keyword()) :: {:ok, map()} | {:error, term()}
```

# `mutation`

```elixir
@callback mutation(pid(), mutation :: String.t(), variables :: map(), opts :: keyword()) ::
  {:ok, map()} | {:error, term()}
```

# `query`

```elixir
@callback query(pid(), query :: String.t(), variables :: map(), opts :: keyword()) ::
  {:ok, map()} | {:error, term()}
```

# `start_link`

```elixir
@callback start_link(provider :: map()) :: {:ok, pid()} | {:error, term()}
```

# `subscription`

```elixir
@callback subscription(
  pid(),
  subscription :: String.t(),
  variables :: map(),
  opts :: keyword()
) ::
  {:ok, map()} | {:error, term()}
```

# `update_last_used`

```elixir
@callback update_last_used(pid()) :: :ok
```

---

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