# `Wardrik.Definitions`

Stores each agent's definition as it was given.

# `boundary`

```elixir
@spec boundary(Wardrik.t(), String.t()) :: String.t() | map() | nil
```

Returns the name of the policy that bounds the agent `id`, or `nil`.

# `delete`

```elixir
@spec delete(Wardrik.t(), String.t()) :: :ok | {:error, term()}
```

Removes the agent `id`'s definition, and its boundary. Removing none is `:ok`.

# `fetch`

```elixir
@spec fetch(Wardrik.t(), String.t()) :: {:ok, map()} | :error
```

Returns the agent `id`'s definition, or `:error` if it has none.

# `ids`

```elixir
@spec ids(Wardrik.t()) :: [String.t()]
```

Returns the IDs of the agents with a definition.

# `put`

```elixir
@spec put(Wardrik.t(), String.t(), map()) :: :ok | {:error, term()}
```

Stores `definition` for the agent `id`.

# `put_boundary`

```elixir
@spec put_boundary(Wardrik.t(), String.t(), String.t() | map()) ::
  :ok | {:error, term()}
```

Stores the agent `id`'s boundary: the policy named by the token that defined it.

---

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