async def METHOD_NAME(
    self, *, route: str, data: Union[None, dict] = None
) -> httpx.Response:
    """
    Attempt to get something from the API, and return the raw
    response object if an error response wasn't received.
    If an error response was received, raises an error.
    Parameters
    ----------
    route : str
        Path relative to API host to get
    data : dict, optional
        JSON data to send in the request body (optional)
    Returns
    -------
    requests.Response
    """
    logger.debug(f"Getting {self.url}/api/{self.api_version}/{route}")
    try:
        response = await self.session.request(
            "GET",
            route,
            follow_redirects=False,
            json=data,
        )
    except RequestError as e:
        error_msg = f"Unable to connect to FlowKit API at {self.url}: {e}"
        logger.info(error_msg)
        raise FlowclientConnectionError(error_msg)
    if response.status_code in {202, 200, 303}:
        return response
    elif response.status_code == 404:
        raise FileNotFoundError(
            f"{self.url}/api/{self.api_version}/{route} not found."
        )
    elif response.status_code in {401, 403}:
        try:
            error = response.json()["msg"]
        except (ValueError, KeyError):
            error = "Unknown access denied error"
        raise FlowclientConnectionError(error)
    else:
        try:
            error = response.json()["msg"]
        except (ValueError, KeyError):
            error = "Unknown error"
        try:
            status = response.json()["status"]
        except (ValueError, KeyError):
            status = "Unknown status"
        raise FlowclientConnectionError(
            f"Something went wrong: {error}. API returned with status code: {response.status_code} and status '{status}'"
        )