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

# `characteristic?`

```elixir
@spec characteristic?(module()) :: boolean()
```

Returns true if the module is a BaseCharacteristic-derived resource (or Characteristic itself)

# `instance?`

```elixir
@spec instance?(module()) :: boolean()
```

Returns true if the module is a BaseInstance-derived resource

# `party?`

```elixir
@spec party?(module()) :: boolean()
```

Returns true if the module is a BaseParty-derived resource

# `place?`

```elixir
@spec place?(module()) :: boolean()
```

Returns true if the module is a BasePlace-derived resource

# `provider_behaviour_actions`

```elixir
@spec provider_behaviour_actions(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.behaviour.actions DSL entities

# `provider_characteristics`

```elixir
@spec provider_characteristics(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.characteristics DSL entities

# `provider_features`

```elixir
@spec provider_features(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.features DSL entities

# `provider_instances`

```elixir
@spec provider_instances(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.instances DSL entities

# `provider_parties`

```elixir
@spec provider_parties(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.parties DSL entities

# `provider_places`

```elixir
@spec provider_places(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.places DSL entities

# `provider_pools`

```elixir
@spec provider_pools(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.pools DSL entities

# `provider_relationships`

```elixir
@spec provider_relationships(dsl_or_extended :: module() | map()) :: [struct()]
```

provider.relationships DSL entities

# `provider_specification_category`

```elixir
@spec provider_specification_category(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

The category the specified service or resource belongs to.

# `provider_specification_category!`

```elixir
@spec provider_specification_category!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

The category the specified service or resource belongs to.

# `provider_specification_description`

```elixir
@spec provider_specification_description(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

A generic description of the specified service or resource.

# `provider_specification_description!`

```elixir
@spec provider_specification_description!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

A generic description of the specified service or resource.

# `provider_specification_id`

```elixir
@spec provider_specification_id(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

The id of the specification, a uuid4 the same in all environments, unique for name and major_version.

# `provider_specification_id!`

```elixir
@spec provider_specification_id!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

The id of the specification, a uuid4 the same in all environments, unique for name and major_version.

# `provider_specification_major_version`

```elixir
@spec provider_specification_major_version(dsl_or_extended :: module() | map()) ::
  {:ok, integer()} | :error
```

The major version of the specification.

# `provider_specification_major_version!`

```elixir
@spec provider_specification_major_version!(dsl_or_extended :: module() | map()) ::
  integer() | no_return()
```

The major version of the specification.

# `provider_specification_minor_version`

```elixir
@spec provider_specification_minor_version(dsl_or_extended :: module() | map()) ::
  {:ok, integer()} | :error
```

The minor version of the specification.

# `provider_specification_minor_version!`

```elixir
@spec provider_specification_minor_version!(dsl_or_extended :: module() | map()) ::
  integer() | no_return()
```

The minor version of the specification.

# `provider_specification_name`

```elixir
@spec provider_specification_name(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

The name of the specification.

# `provider_specification_name!`

```elixir
@spec provider_specification_name!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

The name of the specification.

# `provider_specification_options`

```elixir
@spec provider_specification_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

provider.specification DSL options

Returns a map containing the and any configured or default values.

# `provider_specification_patch_version`

```elixir
@spec provider_specification_patch_version(dsl_or_extended :: module() | map()) ::
  {:ok, integer()} | :error
```

The patch version of the specification.

# `provider_specification_patch_version!`

```elixir
@spec provider_specification_patch_version!(dsl_or_extended :: module() | map()) ::
  integer() | no_return()
```

The patch version of the specification.

# `provider_specification_tmf_version`

```elixir
@spec provider_specification_tmf_version(dsl_or_extended :: module() | map()) ::
  {:ok, integer()} | :error
```

The TMF API version of the specification, e.g. 4.

# `provider_specification_tmf_version!`

```elixir
@spec provider_specification_tmf_version!(dsl_or_extended :: module() | map()) ::
  integer() | no_return()
```

The TMF API version of the specification, e.g. 4.

# `provider_specification_type`

```elixir
@spec provider_specification_type(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

The type of the specification.

# `provider_specification_type!`

```elixir
@spec provider_specification_type!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

The type of the specification.

---

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