def METHOD_NAME(self) -> None:
    """Login to Scarf and store the token and cookie in self.session."""
    if self.logged_in:
        return
    # We are only setting minimum required data here on purpose.
    #
    # If we wanted to make this indistinguishable from a browser we could replicate variations of:
    # EMAIL=my@email.com
    # PASSWORD=my_password
    # curl -H "Host: api.scarf.sh" -H "Cookie: scarf_context={%22_tag%22:%22None%22}" \
    #   -H "sec-ch-ua: \"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\"" \
    #   -H "accept: application/json" -H "content-type: application/json" -H "sec-ch-ua-mobile: ?0" \
    #   -H "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) \
    #   Chrome/105.0.0.0 Safari/537.36" -H "sec-ch-ua-platform: \"macOS\"" -H "origin: https://app.scarf.sh" \
    #   -H "sec-fetch-site: same-site" -H "sec-fetch-mode: cors" -H "sec-fetch-dest: empty" \
    #   -H "referer: https://app.scarf.sh/" -H "accept-language: en-US,en;q=0.9" \
    #   --data-binary "{\"email\":\"$EMAIL\",\"password\":\"$PASSWORD\"}" --compressed \
    #   "https://api.scarf.sh/internal/login"
    payload = {"email": self.email, "password": self.password}
    headers = {"Content-Type": "application/json"}
    r = self.session.post(f"{self.internal_api}/login", json=payload, headers=headers)
    if r.status_code != 200:
        raise RuntimeError(f"Error login in: {r.text}_{r.status_code}")
    response_json = r.json()
    self.token = response_json.get("token")
    self.username = response_json.get("username")
    self.logged_in = True