@classmethod
def list(cls, session, paginated=False, resource_ids=[], no_deleted=True,
    latest=False):
    """This method is a generator which yields operation objects.

        This resource object list generator handles pagination and takes query
        params for response filtering.

        :param session: The session to use for making this request.
        :type session: :class:`~ecl.session.Session`
        :param bool paginated: ``True`` if a GET to this resource returns
            a paginated series of responses, or ``False``
            if a GET returns only one page of data.
            **When paginated is False only one
            page of data will be returned regardless
            of the API's support of pagination.**
        :param list resource_ids: These arguments are passed as
            resource_id query_string.
        :param bool no_deleted:
            ``True`` You can get operations for only existing resources.
            ``False`` You can get operations for all resources even removed.
        :param bool latest:
            ``True`` You can get only the latest operations for each resource.
            ``False`` You can get all of operations for each resource.
        :return: A generator of :class:`Operation` objects.
        :raises: :exc:`~ecl.exceptions.MethodNotSupported` if
                 :data:`Resource.allow_list` is not set to ``True``.
        """
    more_data = True
    uri = cls.base_path + '?no_deleted=%s&latest=%s' % (str(no_deleted).
        lower(), str(latest).lower())
    list_for_resource_ids = []
    if resource_ids:
        for resource_id in resource_ids:
            list_for_resource_ids.append('resource_id=%s' % resource_id)
    resource_id_query = '&'.join(list_for_resource_ids)
    if len(list_for_resource_ids) > 0:
        uri += '&%s' % resource_id_query
    while more_data:
        resp = session.get(uri, endpoint_filter=cls.service, headers={
            'Accept': 'application/json'})
        resp = resp.json()
        if cls.resources_key:
            resp = resp[cls.resources_key]
        if not resp:
            more_data = False
        yielded = 0
        new_marker = None
        for data in resp:
            data.pop('self', None)
            value = cls.existing(**data)
            new_marker = value.id
            yielded += 1
            yield value
        if not paginated:
            return
