# `LivePanels.Canvas.Policy.Request`
[🔗](https://github.com/livepanels/livepanels/blob/v0.1.0/lib/livepanels/canvas/policy/request.ex#L1)

Authorization request passed to a configured `LivePanels.Canvas.Policy`.

The request contains the normalized command, actor, canvas identity, command
action, and resource ids touched by the command. `items` and `connectors` contain
the currently known resources for those ids, so policies can inspect item
props and connector state without depending on socket assigns.

# `t`

```elixir
@type t() :: %LivePanels.Canvas.Policy.Request{
  action: atom(),
  actor: map(),
  canvas_id: String.t(),
  command: tuple(),
  command_type: atom(),
  connector_ids: [String.t()],
  connectors: [LivePanels.Item.t()],
  details: map(),
  item_ids: [String.t()],
  items: %{optional(String.t()) =&gt; LivePanels.Item.t()},
  mode: :local | :shared,
  policy_options: map(),
  subrequests: [t()]
}
```

---

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