# `AshScim.Info`
[🔗](https://github.com/ash-project/ash_scim/blob/main/lib/ash_scim/info.ex#L5)

Introspection for the `AshScim.User` and `AshScim.Group` extensions.

Use these helpers when you need to inspect a resource's SCIM mapping at
runtime (e.g. in routers, plugs, or custom rendering code).

# `scim`

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

scim DSL entities

# `scim_create_action`

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

The Ash create action used by SCIM `POST` requests. Defaults to the resource's primary create action.

# `scim_create_action!`

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

The Ash create action used by SCIM `POST` requests. Defaults to the resource's primary create action.

# `scim_destroy_action`

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

The Ash destroy action used by SCIM `DELETE` requests. Defaults to the resource's primary destroy action.

# `scim_destroy_action!`

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

The Ash destroy action used by SCIM `DELETE` requests. Defaults to the resource's primary destroy action.

# `scim_extension_urns`

```elixir
@spec scim_extension_urns(module()) :: [String.t()]
```

Returns the declared SCIM schema-extension URNs for `resource`.

# `scim_mappings`

```elixir
@spec scim_mappings(module()) :: [
  AshScim.Dsl.Map.t()
  | AshScim.Dsl.Complex.t()
  | AshScim.Dsl.Multivalued.t()
  | AshScim.Dsl.Extension.t()
]
```

Returns all SCIM mapping entities (maps, complex, multivalued) declared on
the resource, preserving declaration order.

# `scim_meta?`

```elixir
@spec scim_meta?(dsl_or_extended :: module() | map()) :: boolean()
```

Emit the standard SCIM `meta` object (created, lastModified, location, resourceType).

# `scim_options`

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

scim DSL options

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

# `scim_path`

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

URL path under which this resource is mounted (relative to the SCIM root).

# `scim_path!`

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

URL path under which this resource is mounted (relative to the SCIM root).

# `scim_read_action`

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

The Ash read action used by SCIM `GET` requests. Defaults to the resource's primary read action.

# `scim_read_action!`

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

The Ash read action used by SCIM `GET` requests. Defaults to the resource's primary read action.

# `scim_resource?`

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

Returns `true` if `resource` carries either the `AshScim.User` or
`AshScim.Group` extension.

# `scim_schema`

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

The SCIM `schemas` URN advertised for this resource.

# `scim_schema!`

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

The SCIM `schemas` URN advertised for this resource.

# `scim_type`

```elixir
@spec scim_type(module()) :: :user | :group | nil
```

Returns the SCIM resource type for `resource` — `:user`, `:group`, or `nil`.

# `scim_update_action`

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

The Ash update action used by SCIM `PUT`/`PATCH` requests. Defaults to the resource's primary update action.

# `scim_update_action!`

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

The Ash update action used by SCIM `PUT`/`PATCH` requests. Defaults to the resource's primary update action.

---

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