# `Jido.Messaging.Directory`
[🔗](https://github.com/agentjido/jido_messaging/blob/v1.0.0/lib/jido_messaging/directory.ex#L1)

Unified directory lookup and search APIs.

Directory adapters expose consistent behavior for participant and room
resolution. Lookup returns a single deterministic match and reports
`{:ambiguous, matches}` when a query maps to multiple entities.

# `lookup_result`

```elixir
@type lookup_result() ::
  {:ok, map()} | {:error, :not_found | {:ambiguous, [map()]} | term()}
```

Lookup contract for directory adapters.

# `query`

```elixir
@type query() :: map()
```

Directory query map consumed by adapters.

# `search_result`

```elixir
@type search_result() :: {:ok, [map()]} | {:error, term()}
```

Search contract for directory adapters.

# `target`

```elixir
@type target() :: :participant | :room
```

Supported directory entity targets.

# `lookup`

```elixir
@callback lookup(adapter_state :: term(), target(), query()) :: lookup_result()
```

# `search`

```elixir
@callback search(adapter_state :: term(), target(), query()) :: search_result()
```

# `lookup`

```elixir
@spec lookup(module(), target(), query(), keyword()) :: lookup_result()
```

Lookup a single directory entity for an instance module.

# `search`

```elixir
@spec search(module(), target(), query(), keyword()) :: search_result()
```

Search directory entities for an instance module.

---

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