defmodule Plaid.PaymentInitiation.Schedule do
@moduledoc """
[Plaid payment initiation payment schedule.](https://plaid.com/docs/api/products/#payment_initiation-payment-create-request-schedule)
"""
@behaviour Plaid.Castable
@type t :: %__MODULE__{
interval: String.t(),
interval_execution_day: number(),
start_date: String.t(),
end_date: String.t()
}
@enforce_keys [:interval, :interval_execution_day, :start_date]
@derive Jason.Encoder
defstruct [
:interval,
:interval_execution_day,
:start_date,
:end_date
]
@impl true
def cast(generic_map) do
%__MODULE__{
interval: generic_map["interval"],
interval_execution_day: generic_map["interval_execution_day"],
start_date: generic_map["start_date"],
end_date: generic_map["end_date"]
}
end
end