Behavior for authentication strategies.
@callback base_url(credentials :: map()) :: String.t()
@callback build_path(model :: String.t(), endpoint :: String.t(), credentials :: map()) :: String.t()
@callback headers(credentials :: map()) :: [{String.t(), String.t()}]
@callback refresh_credentials(credentials :: map()) :: {:ok, map()} | {:error, term()}