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

Runtime-editable bridge and routing control plane.

This is a single-writer GenServer that persists control-plane state through
the configured `Jido.Messaging.Persistence` backend.

# `revision_conflict`

```elixir
@type revision_conflict() ::
  {:revision_conflict, expected_revision :: non_neg_integer(),
   actual_revision :: non_neg_integer() | nil}
```

# `state`

```elixir
@type state() :: %{instance_module: module()}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `delete_bridge_config`

```elixir
@spec delete_bridge_config(module() | pid(), String.t()) :: :ok | {:error, :not_found}
```

Delete a bridge config.

# `delete_ingress_subscription`

```elixir
@spec delete_ingress_subscription(module() | pid(), String.t(), String.t()) ::
  :ok | {:error, :not_found}
```

Delete stored ingress subscription metadata for a bridge.

# `delete_routing_policy`

```elixir
@spec delete_routing_policy(module() | pid(), String.t()) ::
  :ok | {:error, :not_found}
```

Delete room routing policy.

# `get_bridge_config`

```elixir
@spec get_bridge_config(module() | pid(), String.t()) ::
  {:ok, Jido.Messaging.BridgeConfig.t()} | {:error, :not_found}
```

Fetch a bridge config by id.

# `get_routing_policy`

```elixir
@spec get_routing_policy(module() | pid(), String.t()) ::
  {:ok, Jido.Messaging.RoutingPolicy.t()} | {:error, :not_found}
```

Fetch room routing policy.

# `list_bridge_configs`

```elixir
@spec list_bridge_configs(
  module() | pid(),
  keyword()
) :: [Jido.Messaging.BridgeConfig.t()]
```

List bridge configs, optionally filtered by `enabled: true | false`.

# `list_ingress_subscriptions`

```elixir
@spec list_ingress_subscriptions(module() | pid(), String.t(), keyword()) ::
  {:ok, [Jido.Messaging.IngressSubscription.t()]} | {:error, term()}
```

List stored ingress subscription metadata for a bridge.

# `name`

```elixir
@spec name(module()) :: atom()
```

Returns the process name for an instance module.

# `put_bridge_config`

```elixir
@spec put_bridge_config(module() | pid(), Jido.Messaging.BridgeConfig.t() | map()) ::
  {:ok, Jido.Messaging.BridgeConfig.t()}
  | {:error, revision_conflict() | term()}
```

Create or update a bridge config with optimistic revision checks.

# `put_routing_policy`

```elixir
@spec put_routing_policy(
  module() | pid(),
  String.t(),
  Jido.Messaging.RoutingPolicy.t() | map()
) ::
  {:ok, Jido.Messaging.RoutingPolicy.t()}
  | {:error, revision_conflict() | term()}
```

Create or update room routing policy with optimistic revision checks.

# `save_ingress_subscription`

```elixir
@spec save_ingress_subscription(
  module() | pid(),
  Jido.Messaging.IngressSubscription.t()
) ::
  {:ok, Jido.Messaging.IngressSubscription.t()} | {:error, term()}
```

Persist normalized ingress subscription metadata.

---

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