# `Relyra.RequestStore`
[🔗](https://github.com/szTheory/relyra/blob/v1.1.0/lib/relyra/request_store.ex#L1)

Public extension contract for request-intent persistence and one-time consumption.

# `consume_intent`

```elixir
@callback consume_intent(
  relay_state :: binary(),
  request_id :: binary(),
  opts :: keyword()
) ::
  :ok | {:error, Relyra.Error.t()}
```

# `fetch_intent`

```elixir
@callback fetch_intent(relay_state :: binary(), opts :: keyword()) ::
  {:ok, map()} | {:error, Relyra.Error.t()}
```

# `put_intent`

```elixir
@callback put_intent(relay_state :: binary(), intent :: map(), opts :: keyword()) ::
  :ok | {:error, Relyra.Error.t()}
```

# `consume_intent`

```elixir
@spec consume_intent(binary(), binary(), keyword()) ::
  :ok | {:error, Relyra.Error.t()}
```

# `fetch_intent`

```elixir
@spec fetch_intent(
  binary(),
  keyword()
) :: {:ok, map()} | {:error, Relyra.Error.t()}
```

# `put_intent`

```elixir
@spec put_intent(binary(), map(), keyword()) :: :ok | {:error, Relyra.Error.t()}
```

---

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