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

Applies the SCIM `attributes` / `excludedAttributes` query parameters to an
encoded resource map (RFC 7644 §3.4.2.5).

* `attributes=a,b,c` — only the named attributes are returned, plus the
  always-required `id`, `schemas`, and `meta`.
* `excludedAttributes=a,b,c` — the named attributes are stripped, but
  `id`, `schemas`, and `meta` always come through.

Dotted paths address sub-attributes of complex objects, e.g.
`attributes=name.givenName` returns only `name: {givenName: ...}`.

# `apply`

```elixir
@spec apply(%{required(String.t()) =&gt; term()}, %{required(String.t()) =&gt; term()}) ::
  %{
    required(String.t()) =&gt; term()
  }
```

Project an encoded SCIM resource map according to the request's selection
query params.

Pass the parsed query-param map (as `Plug.Conn.fetch_query_params/1` would
produce) so that empty/missing values become a no-op.

---

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