def get_objects(self, oid=None,
                    since=None, until=None, last=None, first=None):
        """
        FETCHES a filtered collection of objects created by the authenticated
        user.
        
        :type oid: ``bigint``
        :param oid:
            Object ID
        :type since: ``datetime``/``dict``
        :param since:
            Object has to be newer than this timestamp (absolute ``datetime``,
            or relative ``dict``). Valid keys for relative `since` timestamp
            dictionary are same as keyword arguments for `datetime.timedelta`
            (``days``, ``seconds``, ``minutes``, ``hours``, ``weeks``).
        :type until: ``datetime``/``dict``
        :param until:
            Object has to be older than this timestamp (for format, see the
            `since` parameter above).
        :type last: ``bigint``
        :param last:
            The number of newest objects (that satisfy all other criteria) to
            return.
        :type first: ``bigint``
        :param first:
            The number of oldest objects (that satisfy all other criteria) to
            return.
        
        :rtype: ``list``/``dict``
        :returns:
            A list of object description dictionaries. If ``oid`` is specified,
            a single dictionary is returned instead of a list.
        :raises GeneralException:
        
        :resource:
            ``registry/objects[/<oid>]``
            ``[/since=<since>][/until=<until>][/last=<last>][/first=<first>]``
        :access: authorized users (only objects owned by the authenticated user
            are returned)
        """
        resource = self.kvpath('registry/objects', ('int', oid),
                               since=('isobasic', absdatetime(since)),
                               until=('isobasic', absdatetime(until)),
                               first=('int', first), last=('int', last))
        return self.request('get', resource)