@type error() :: {:error, String.t()}
@type response() :: {:ok, any()}
@callback get_response(opts :: map()) :: response() | error()