# `Ltix.MembershipsService.MembershipContainer`
[🔗](https://github.com/DecoyLex/ltix/blob/main/lib/ltix/memberships_service/membership_container.ex#L1)

A roster response from the memberships service.

Contains the context (course/section) information and a list of
members. Implements `Enumerable`, so you can pipe it directly into
`Enum` or `Stream` functions to iterate over members.

## Examples

    {:ok, roster} = Ltix.MembershipsService.get_members(client)

    roster.context.id
    #=> "course-123"

    roster
    |> Enum.filter(&(&1.status == :active))
    |> Enum.map(& &1.email)

    Enum.count(roster)

# `t`

```elixir
@type t() :: %Ltix.MembershipsService.MembershipContainer{
  context: Ltix.LaunchClaims.Context.t(),
  id: String.t() | nil,
  members: [Ltix.MembershipsService.Member.t()]
}
```

# `from_json`

```elixir
@spec from_json(map()) :: {:ok, t()} | {:error, Exception.t()}
```

Parse a membership container from a decoded JSON response body.

Returns `{:ok, container}` on success or `{:error, exception}` if
the context is missing or a member fails to parse.

---

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