lib/easypost/batch.ex

defmodule EasyPost.Batch do
  @doc """
  Add shipments to a `Batch`.
  """
  @spec add_shipments(String.t(), map) :: EasyPost.Operation.t()
  def add_shipments(id, params) do
    %EasyPost.Operation{
      method: :post,
      params: params,
      path: "/batches/#{id}/add_shipments"
    }
  end

  @doc """
  Create a `Batch`.
  """
  @spec create(map) :: EasyPost.Operation.t()
  def create(params) do
    %EasyPost.Operation{ method: :post, params: params, path: "/batches" }
  end

  @doc """
  Generate a label for a `Batch`.
  """
  @spec label(String.t(), map) :: EasyPost.Operation.t()
  def label(id, params) do
    %EasyPost.Operation{
      method: :post,
      params: params,
      path: "/batches/#{id}/label"
    }
  end

  @doc """
  Remove shipments from a `Batch`.
  """
  @spec remove_shipments(String.t(), map) :: EasyPost.Operation.t()
  def remove_shipments(id, params) do
    %EasyPost.Operation{
      method: :post,
      params: params,
      path: "/batches/#{id}/remove_shipments"
    }
  end

  @doc """
  Generate a manifest for a `Batch`.
  """
  @spec scan_form(String.t()) :: EasyPost.Operation.t()
  def scan_form(id) do
    %EasyPost.Operation{ method: :post, path: "/batches/#{id}/scan_form" }
  end
end