def METHOD_NAME(cls, project):
    """Method called to retrieve all the versions (that can be found)
    of the projects provided, project that relies on the backend of
    this plugin.
    :arg Project project: a :class:`anitya.db.models.Project` object whose backend
        corresponds to the current plugin.
    :return: a list of all the possible releases found
    :return type: list
    :raise AnityaPluginException: a
        :class:`anitya.lib.exceptions.AnityaPluginException` exception
        when the versions cannot be retrieved correctly
    """
    url = cls.get_version_url(project)
    if not url:
        raise AnityaPluginException(
            f"Project {project.name} was incorrectly set up."
        )
    last_change = project.get_time_last_created_version()
    resp = cls.call_url(url, last_change=last_change)
    if resp.status_code == 200:
        json = resp.json()
    else:
        # Not modified
        if resp.status_code == 304:
            return []
        raise AnityaPluginException(
            f"{project.name}: Server responded with status "
            f'"{resp.status_code}": "{resp.reason}"'
        )
    _log.debug("Received %s tags for %s", len(json), project.name)
    tags = []
    for tag in json:
        tags.append(tag["name"])
    if len(tags) == 0:
        raise AnityaPluginException(f"{project.name}: No upstream version found.")
    # Filter retrieved versions
    filtered_versions = cls.filter_versions(tags, project.version_filter)
    return filtered_versions