def METHOD_NAME(self, request):
    # https://tools.ietf.org/html/rfc8628#section-3.1
    self.authenticate_client(request)
    self.server.validate_requested_scope(request.scope)
    device_code = self.generate_device_code()
    user_code = self.generate_user_code()
    verification_uri = self.get_verification_uri()
    verification_uri_complete = add_params_to_uri(
        verification_uri, [('user_code', user_code)])
    data = {
        'device_code': device_code,
        'user_code': user_code,
        'verification_uri': verification_uri,
        'verification_uri_complete': verification_uri_complete,
        'expires_in': self.EXPIRES_IN,
        'interval': self.INTERVAL,
    }
    self.save_device_credential(request.client_id, request.scope, data)
    return 200, data, default_json_headers