async def METHOD_NAME(self) -> str:
    """Request a new OAuth2 token.
    :return: [description]
    :rtype: str
    """
    if self.token_expired():
        headers={
            'accept': 'application/json',
            'user-agent': 'oca_stixshifter_1.0',
            'Content-Type': 'application/x-www-form-urlencoded'
        }
        data=(
            f'client_id={self._client_id}'
            f'&client_secret={self._client_secret}'
        )
        resp = await self.client.call_api(self.TOKEN_ENDPOINT, 'POST', headers=headers, data=data, timeout=self.timeout)
        response_code = resp.code
        response_txt = resp.read().decode('utf-8')
        if 199 < response_code < 300:
            response_json = json.loads(response_txt)
            if 'access_token' in response_json:
                token = response_json.get('access_token')
                self._token = token
                self._token_time = datetime.now()
    return self._token