lib/client.ex
defmodule SlackWeb.Client do
@moduledoc """
Defines a custom client for making calls to Slack Web API.
"""
@type url :: String.t()
@type form_body :: {:form, Keyword.t()}
@type multipart_form_body :: {:multipart, nonempty_list(tuple())}
@type body :: form_body() | multipart_form_body()
@doc """
Return value is passed directly to caller of generated Web API
module/functions. Can be any term.
"""
@callback post!(url :: url, body :: body) :: term()
end