async def METHOD_NAME(
    self, scope: str, history_definition_id: str, instance_id: str, **kwargs: Any
) -> _models.AccessReviewHistoryInstance:
    """Generates a uri which can be used to retrieve review history data. This URI has a TTL of 1 day
    and can be retrieved by fetching the accessReviewHistoryDefinition object.
    :param scope: The scope of the resource. Required.
    :type scope: str
    :param history_definition_id: The id of the access review history definition. Required.
    :type history_definition_id: str
    :param instance_id: The id of the access review history definition instance to generate a URI
     for. Required.
    :type instance_id: str
    :keyword callable cls: A custom type or function that will be passed the direct response
    :return: AccessReviewHistoryInstance or the result of cls(response)
    :rtype: ~azure.mgmt.authorization.v2021_12_01_preview.models.AccessReviewHistoryInstance
    :raises ~azure.core.exceptions.HttpResponseError:
    """
    error_map = {
        401: ClientAuthenticationError,
        404: ResourceNotFoundError,
        409: ResourceExistsError,
        304: ResourceNotModifiedError,
    }
    error_map.update(kwargs.pop("error_map", {}) or {})
    _headers = kwargs.pop("headers", {}) or {}
    _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
    api_version: str = kwargs.pop(
        "api_version", _params.pop("api-version", self._api_version or "2021-12-01-preview")
    )
    cls: ClsType[_models.AccessReviewHistoryInstance] = kwargs.pop("cls", None)
    request = build_generate_download_uri_request(
        scope=scope,
        history_definition_id=history_definition_id,
        instance_id=instance_id,
        api_version=api_version,
        template_url=self.METHOD_NAME.metadata["url"],
        headers=_headers,
        params=_params,
    )
    request = _convert_request(request)
    request.url = self._client.format_url(request.url)
    _stream = False
    pipeline_response: PipelineResponse = await self._client._pipeline.run(  # pylint: disable=protected-access
        request, stream=_stream, **kwargs
    )
    response = pipeline_response.http_response
    if response.status_code not in [200]:
        map_error(status_code=response.status_code, response=response, error_map=error_map)
        error = self._deserialize.failsafe_deserialize(_models.ErrorDefinition, pipeline_response)
        raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
    deserialized = self._deserialize("AccessReviewHistoryInstance", pipeline_response)
    if cls:
        return cls(pipeline_response, deserialized, {})
    return deserialized