defmodule Notion.Client do @moduledoc """ Defines a custom client for making calls to Notion API. """ @type url :: String.t() @type headers :: List.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 delete!(url :: url, headers :: headers) :: term() @callback get!(url :: url, headers :: headers) :: term() @callback patch!(url :: url, headers :: headers, body :: body) :: term() @callback post!(url :: url, headers :: headers, body :: body) :: term() end