lib/vault/json/adapter.ex

defmodule Vault.JSON.Adapter do
  @moduledoc """
  The adapter interface for encoding, and decoding json or vault requests

  Recommended JSON adapters:
  - `Jason`
  - `Poison`
  """
  @type options :: list | map

  @callback encode(term, [term]) :: {:ok, String.t()} | {:error, term}
  @callback encode!(term, [term]) :: String.t()

  @callback decode(iodata, [term]) :: {:ok, term} | {:error, term}
  @callback decode!(iodata, [term]) :: term
end