defmodule Plaid.Auth.Numbers do @moduledoc """ [Plaid Numbers schema](https://plaid.com/docs/api/products/#auth-get-response-numbers). """ @behaviour Plaid.Castable alias Plaid.Auth.Numbers.{ACH, BACS, EFT, International} alias Plaid.Castable @type t :: %__MODULE__{ ach: [ACH.t()], eft: [EFT.t()], international: [International.t()], bacs: [BACS.t()] } defstruct [ :ach, :eft, :international, :bacs ] @impl true def cast(generic_map) do %__MODULE__{ ach: Castable.cast_list(ACH, generic_map["ach"]), eft: Castable.cast_list(EFT, generic_map["eft"]), international: Castable.cast_list(International, generic_map["international"]), bacs: Castable.cast_list(BACS, generic_map["bacs"]) } end end