# `Mediate.Decision`
[🔗](https://github.com/mrmeku/mediate/blob/v0.1.0/lib/mediate/decision.ex#L1)

The stamped answer: what the port said, when, from what state, under which rules. It is the value the seam accepts under `mediate:`.

# `t`

```elixir
@type t() :: %Mediate.Decision{
  adapter: module(),
  at: DateTime.t(),
  id: Mediate.Id.t(),
  object: Mediate.object(),
  operation: atom(),
  operation_id: Mediate.Id.t(),
  policy_version: Mediate.PolicyVersion.ref() | nil,
  reason: Mediate.Answer.reason(),
  subject: Mediate.subject(),
  verdict: verdict()
}
```

`policy_version` is `nil` where the adapter names no version for the answer.

# `verdict`

```elixir
@type verdict() :: :allow | :deny | :scoped
```

`:scoped` is the verdict of a `scope` decision, whose rule narrows rather than allows.

# `verdicts`

```elixir
@spec verdicts() :: [verdict()]
```

The three verdicts.

---

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