lib/klaviyo/template.ex

defmodule Klaviyo.Template do
  alias Klaviyo.RequestOperation

  @spec all(Enum.t()) :: RequestOperation.t()
  def all(params \\ []) do
    %RequestOperation{
      method: :get,
      path: "/api/templates",
      query: params
    }
  end

  @spec clone(Enum.t()) :: RequestOperation.t()
  def clone(params) do
    %RequestOperation{
      body: params,
      method: :post,
      path: "/api/template-clone"
    }
  end

  @spec create(Enum.t()) :: RequestOperation.t()
  def create(params) do
    %RequestOperation{
      body: params,
      method: :post,
      path: "/api/templates"
    }
  end

  @spec delete(String.t()) :: RequestOperation.t()
  def delete(template_id) do
    %RequestOperation{
      method: :delete,
      path: "/api/templates/#{template_id}"
    }
  end

  @spec get(String.t(), Enum.t()) :: RequestOperation.t()
  def get(template_id, params \\ []) do
    %RequestOperation{
      method: :get,
      path: "/api/templates/#{template_id}",
      query: params
    }
  end

  @spec render(Enum.t()) :: RequestOperation.t()
  def render(params) do
    %RequestOperation{
      body: params,
      method: :post,
      path: "/api/template-render"
    }
  end

  @spec update(String.t(), Enum.t()) :: RequestOperation.t()
  def update(template_id, params) do
    %RequestOperation{
      body: params,
      method: :put,
      path: "/api/templates/#{template_id}"
    }
  end
end