lib/plans.ex

defmodule GnApiSdkElixir.Plans do
  @moduledoc """
  Módulo de integração de planos
  """

  alias GnApiSdkElixir.Request

  @doc """
  Busca informações relacionadas à uma assinatura.
  """
  def list do
    Request.get("/v1/plans")
  end

  @doc """
  Cria o plano de assinatura, sendo definido pelo integrador o nome do plano, intervalo (em meses) em que a assinatura será gerada e a quantidade de repetições que a cobrança será gerada.
  """
  @type plan :: %{name: String.t, interval: integer, repeats: integer}
  def create(plan) do
    Request.post("/v1/plan", plan)
  end

  @doc """
  Permite alterar (editar) o nome de um plano de assinatura pré existente. Para tal, deve ser fornecido o identificador do plan_id desejado.
  """
  def update(id, %{name: name}) do
    Request.put("/v1/plan/#{id}", %{name: name})
  end

  @doc """
  Permite cancelar um plano de assinatura. Para tal, você deve informar o plan_id.
  """
  def delete(id) do
    Request.delete("/v1/plan/#{id}")
  end
end