def METHOD_NAME(self, request_type, url, data=None, skip_auth=False):
    if data is None:
        data = {}
    result = {}
    try:
        auth = tuple()
        if not skip_auth:
            auth = tuple(
                [
                    self.carrier_id.correos_express_username,
                    self.carrier_id.correos_express_password,
                ]
            )
        if request_type == "GET":
            res = requests.get(url=url, auth=auth, timeout=60)
        elif request_type == "POST":
            _logger.debug(data)
            res = requests.post(url=url, auth=auth, json=data, timeout=60)
        else:
            raise UserError(
                _("Unsupported request type, please only use 'GET' or 'POST'")
            )
        result = res.json()
        correos_express_last_request = ("URL: {}\nData: {}").format(url, data)
        self.carrier_id.log_xml(
            correos_express_last_request, "correos_express_last_request"
        )
        self.carrier_id.log_xml(result, "correos_express_last_response")
        _logger.debug(res.json())
        res.raise_for_status()
    except requests.exceptions.Timeout:
        raise UserError(_("Timeout: the server did not reply within 60s"))
    except Exception as e:
        raise UserError(_("{}\n{}".format(e, result if result else "")))
    return_code, message = self._check_for_error(result)
    if return_code != 0:
        raise UserError(
            _("Correos Express Error: {} {}").format(return_code, message)
        )
    return res