defmodule Plaid.Institution do
@moduledoc """
[Plaid Institution schema](https://plaid.com/docs/api/institutions/#institutions-get-response-institutions)
"""
@behaviour Plaid.Castable
alias Plaid.Castable
alias Plaid.Institution.Status
@type t :: %__MODULE__{
country_codes: [String.t()],
institution_id: String.t(),
logo: String.t() | nil,
name: String.t(),
oauth: boolean(),
primary_color: String.t() | nil,
products: [String.t()],
routing_numbers: [String.t()] | nil,
status: Status.t(),
url: String.t() | nil
}
defstruct [
:country_codes,
:institution_id,
:logo,
:name,
:oauth,
:primary_color,
:products,
:routing_numbers,
:status,
:url
]
@impl true
def cast(generic_map) do
%__MODULE__{
country_codes: generic_map["country_codes"],
institution_id: generic_map["institution_id"],
logo: generic_map["logo"],
name: generic_map["name"],
oauth: generic_map["oauth"],
primary_color: generic_map["primary_color"],
products: generic_map["products"],
routing_numbers: generic_map["routing_numbers"],
status: Castable.cast(Status, generic_map["status"]),
url: generic_map["url"]
}
end
end