defmodule Plaid.AssetReport.Report.Item do @moduledoc """ [Plaid Asset Report Item schema](https://plaid.com/docs/api/products/#asset_report-get-response-items) """ @behaviour Plaid.Castable alias Plaid.Account alias Plaid.Castable @type t :: %__MODULE__{ item_id: String.t(), institution_name: String.t(), institution_id: String.t(), date_last_updated: String.t(), accounts: [Account.t()] } defstruct [ :item_id, :institution_name, :institution_id, :date_last_updated, :accounts ] @impl true def cast(generic_map) do %__MODULE__{ item_id: generic_map["item_id"], institution_name: generic_map["institution_name"], institution_id: generic_map["institution_id"], date_last_updated: generic_map["date_last_updated"], accounts: Castable.cast_list(Account, generic_map["accounts"]) } end end