defmodule AccessGrid.HidOrg do
@moduledoc """
HID Origo organization registered to the account. Returned by
`AccessGrid.Console.list_hid_orgs/1`, `AccessGrid.Console.create_hid_org/2`,
and `AccessGrid.Console.activate_hid_org/2`.
The activate endpoint (`activate_hid_org/2`) may return extra fields like
`already_completed: true` or `job_queued: true` to indicate state — those are
not surfaced on this struct. Use `org.status` to determine activation state.
"""
@type t :: %__MODULE__{
id: String.t() | nil,
name: String.t() | nil,
slug: String.t() | nil,
first_name: String.t() | nil,
last_name: String.t() | nil,
phone: String.t() | nil,
full_address: String.t() | nil,
status: String.t() | nil,
created_at: String.t() | nil
}
defstruct [
:id,
:name,
:slug,
:first_name,
:last_name,
:phone,
:full_address,
:status,
:created_at
]
@doc """
Creates a HidOrg struct from an API response map.
"""
@spec from_response(map()) :: t()
def from_response(data) when is_map(data) do
%__MODULE__{
id: data["id"],
name: data["name"],
slug: data["slug"],
first_name: data["first_name"],
last_name: data["last_name"],
phone: data["phone"],
full_address: data["full_address"],
status: data["status"],
created_at: data["created_at"]
}
end
end