lib/schemas/org_membership.ex

defmodule GitHub.OrgMembership do
  @moduledoc """
  Provides struct and type for OrgMembership
  """

  @type t :: %__MODULE__{
          organization: GitHub.Organization.simple(),
          organization_url: String.t(),
          permissions: map | nil,
          role: String.t(),
          state: String.t(),
          url: String.t(),
          user: GitHub.User.simple() | nil
        }

  defstruct [:organization, :organization_url, :permissions, :role, :state, :url, :user]

  @doc false
  @spec __fields__(atom) :: keyword
  def __fields__(type \\ :t)

  def __fields__(:t) do
    [
      organization: {GitHub.Organization, :simple},
      organization_url: :string,
      permissions: :map,
      role: :string,
      state: :string,
      url: :string,
      user: {:nullable, {GitHub.User, :simple}}
    ]
  end
end