Selecto.Capabilities.Decision (Selecto v0.4.6)

Copy Markdown

Stable capability answer shape.

Decisions are richer than booleans so consumers can represent hidden, disabled, preview-only, and query-shaping outcomes consistently.

Summary

Functions

Builds a hidden deny decision.

Builds a decision from atom-keyed or string-keyed map/keyword attributes.

Builds a conditional preview-only decision.

Types

status()

@type status() :: :allow | :deny | :conditional | :not_applicable

t()

@type t() :: %Selecto.Capabilities.Decision{
  audit_reason: String.t() | nil,
  effects: [term()],
  metadata: map(),
  obligations: [term()],
  reason_code: atom() | String.t() | nil,
  status: status(),
  user_message: String.t() | nil,
  visibility: visibility()
}

visibility()

@type visibility() :: :enabled | :disabled | :hidden | :preview_only

Functions

allow(reason_code \\ :allowed, attrs \\ [])

@spec allow(atom() | String.t(), map() | keyword()) :: t()

Builds an allow decision.

deny(reason_code \\ :denied, attrs \\ [])

@spec deny(atom() | String.t(), map() | keyword()) :: t()

Builds a deny decision.

hidden(reason_code \\ :hidden, attrs \\ [])

@spec hidden(atom() | String.t(), map() | keyword()) :: t()

Builds a hidden deny decision.

new(attrs \\ [])

@spec new(map() | keyword()) :: t()

Builds a decision from atom-keyed or string-keyed map/keyword attributes.

not_applicable(reason_code \\ :not_applicable, attrs \\ [])

@spec not_applicable(atom() | String.t(), map() | keyword()) :: t()

Builds a not-applicable decision.

preview_only(reason_code \\ :preview_only, attrs \\ [])

@spec preview_only(atom() | String.t(), map() | keyword()) :: t()

Builds a conditional preview-only decision.