defmodule Plaid.Error do @moduledoc """ [Plaid API Error response Schema.](https://plaid.com/docs/errors/) """ @behaviour Plaid.Castable @type t :: %__MODULE__{ error_type: String.t(), error_code: String.t(), error_message: String.t(), display_message: String.t() | nil, request_id: String.t(), causes: [], status: integer() | nil, documentation_url: String.t(), suggested_action: String.t() | nil } defstruct [ :error_type, :error_code, :error_message, :display_message, :request_id, :causes, :status, :documentation_url, :suggested_action ] @impl true def cast(generic_map) do %__MODULE__{ error_type: generic_map["error_type"], error_code: generic_map["error_code"], error_message: generic_map["error_message"], display_message: generic_map["display_message"], request_id: generic_map["request_id"], causes: generic_map["causes"], status: generic_map["status"], documentation_url: generic_map["documentation_url"], suggested_action: generic_map["suggested_action"] } end end