# `Diffo.Provider.Instance.Info`
[🔗](https://github.com/diffo-dev/diffo/blob/v0.9.0/lib/diffo/provider/components/instance/info.ex#L5)

Public introspection API for resources extending Diffo.Provider.BaseInstance

# `characteristic`

```elixir
@spec characteristic(Ash.Resource.t(), atom()) :: struct() | nil
```

Returns the named characteristic declaration, or nil

# `characteristics`

```elixir
@spec characteristics(Ash.Resource.t()) :: list() | []
```

Returns the list of characteristic declarations for the resource

# `feature`

```elixir
@spec feature(Ash.Resource.t(), atom()) :: struct() | nil
```

Returns the named feature declaration, or nil

# `feature_characteristic`

```elixir
@spec feature_characteristic(Ash.Resource.t(), atom(), atom()) :: struct() | nil
```

Returns the named characteristic within a feature, or nil

# `features`

```elixir
@spec features(Ash.Resource.t()) :: list() | []
```

Returns the list of feature declarations for the resource

# `parties`

```elixir
@spec parties(Ash.Resource.t()) :: list() | []
```

Returns the list of party role declarations for the resource

# `party`

```elixir
@spec party(Ash.Resource.t(), atom()) :: struct() | nil
```

Returns the party declaration for the given role, or nil

# `place`

```elixir
@spec place(Ash.Resource.t(), atom()) :: struct() | nil
```

Returns the place declaration for the given role, or nil

# `places`

```elixir
@spec places(Ash.Resource.t()) :: list() | []
```

Returns the list of place role declarations for the resource

# `specification`

```elixir
@spec specification(Ash.Resource.t()) :: keyword() | nil
```

Returns the normalised specification keyword list for the resource

---

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