defmodule Plaid.Investments.Security do
@moduledoc """
[Plaid Investments Security schema](https://plaid.com/docs/api/products/#investments-holdings-get-response-securities)
"""
@behaviour Plaid.Castable
@type t :: %__MODULE__{
close_price: number() | nil,
close_price_as_of: String.t() | nil,
cusip: String.t() | nil,
institution_id: String.t() | nil,
institution_security_id: String.t() | nil,
is_cash_equivalent: boolean(),
isin: String.t() | nil,
iso_currency_code: String.t() | nil,
name: String.t() | nil,
proxy_security_id: String.t() | nil,
security_id: String.t(),
sedol: String.t() | nil,
ticker_symbol: String.t() | nil,
type: String.t(),
unofficial_currency_code: String.t() | nil
}
defstruct [
:close_price,
:close_price_as_of,
:cusip,
:institution_id,
:institution_security_id,
:is_cash_equivalent,
:isin,
:iso_currency_code,
:name,
:proxy_security_id,
:security_id,
:sedol,
:ticker_symbol,
:type,
:unofficial_currency_code
]
@impl true
def cast(generic_map) do
%__MODULE__{
close_price: generic_map["close_price"],
close_price_as_of: generic_map["close_price_as_of"],
cusip: generic_map["cusip"],
institution_id: generic_map["institution_id"],
institution_security_id: generic_map["institution_security_id"],
is_cash_equivalent: generic_map["is_cash_equivalent"],
isin: generic_map["isin"],
iso_currency_code: generic_map["iso_currency_code"],
name: generic_map["name"],
proxy_security_id: generic_map["proxy_security_id"],
security_id: generic_map["security_id"],
sedol: generic_map["sedol"],
ticker_symbol: generic_map["ticker_symbol"],
type: generic_map["type"],
unofficial_currency_code: generic_map["unofficial_currency_code"]
}
end
end