A single member in a roster response from the memberships service.
Each member has a user_id (matching sub from launch JWTs) and
roles (parsed into %Role{} structs). Additional fields like
name, email, and picture depend on platform consent.
Examples
{:ok, member} = Ltix.MembershipsService.Member.from_json(%{
"user_id" => "user-1",
"roles" => ["http://purl.imsglobal.org/vocab/lis/v2/membership#Learner"],
"name" => "Jane Doe",
"email" => "jane@example.edu"
})
member.user_id
#=> "user-1"
member.name
#=> "Jane Doe"
hd(member.roles).name
#=> :learner
Summary
Functions
Parse a member from a JSON map in a membership container response.
Types
@type t() :: %Ltix.MembershipsService.Member{ email: String.t() | nil, family_name: String.t() | nil, given_name: String.t() | nil, lis_person_sourcedid: String.t() | nil, lti11_legacy_user_id: String.t() | nil, message: [Ltix.LaunchClaims.t()] | nil, middle_name: String.t() | nil, name: String.t() | nil, picture: String.t() | nil, roles: [Ltix.LaunchClaims.Role.t()], status: :active | :inactive | :deleted, unrecognized_roles: [String.t()], user_id: String.t() }
Functions
@spec from_json(map()) :: {:ok, t()} | {:error, Exception.t()}
Parse a member from a JSON map in a membership container response.
Returns {:ok, member} on success or {:error, exception} if
required fields are missing or invalid.