def revoke_vouchers(self, vid_encoded=None,
                        uid_from=None, uid_to=None, gid=None,
                        valid_after=None, valid_before=None,
                        last=None, first=None):
        """
        REVOKES/INVALIDATES a filtered list of vouchers.
        
        :type vid_encoded: ``alphanumeric(64)``
        :param vid_encoded:
            Voucher ID, as a string with CRC.
        :type uid_from: ``bigint``
        :param uid_from:
            Filter by source account UID.
        :type uid_to: ``bigint``
        :param uid_to:
            Filter by destination account UID.
        :type gid: ``alphanumeric(32)``
        :param gid:
            Filter by voucher Group ID. GID is localized to `uid_from`.
        :type valid_after: ``datetime``/``dict``
        :param valid_after:
            Voucher has to be valid after this timestamp. Absolute
            (``datetime``) or relative (``dict``) timestamps are accepted. Valid
            keys for relative timestamp dictionary are same as keyword arguments
            for `datetime.timedelta` (``days``, ``seconds``, ``minutes``,
            ``hours``, ``weeks``).
        :type valid_before: ``datetime``/``dict``
        :param valid_before:
            Voucher was valid until this timestamp (for format, see the
            `valid_after` above).
        :type last: ``bigint``
        :param last:
            The number of newest vouchers (that satisfy all other criteria) to
            return.
        :type first: ``bigint``
        :param first:
            The number of oldest vouchers (that satisfy all other criteria) to
            return.
        
        :note:
            As with `get_vouchers`, filters are restrictive, narrowing down the
            set of vouchers, which initially includes complete voucher
            collection. That means, in turn, that a naive empty-handed
            `revoke_vouchers()` call shall revoke **all** un-used vouchers (both
            valid and expired)!
        
        :rtype: ``dict``
        :returns:
            A dictionary of successfully revoked vouchers, i.e. a map
            ``vid_encoded``: ``refund_transfer_id`` for all successfully revoked
            vouchers.
        :raises GeneralException:
        
        :resource:
            ``vouchers[/<vid_encoded>][/from=<uid_from>][/to=<uid_to>]``
            ``[/valid_after=<valid_after>][/valid_before=<valid_before>]``
            ``[/last=<last>][/first=<first>]``
        :access: authorized users (ACL flag: ``voucher.revoke``)
        """
        resource = self.kvpath(
            'vouchers',
            ('ident', vid_encoded),
            **{
                'from': ('int', uid_from),
                'to': ('int', uid_to),
                'gid': ('ident', gid),
                'valid_after': ('isobasic', absdatetime(valid_after)),
                'valid_before': ('isobasic', absdatetime(valid_before)),
                'first': ('int', first),
                'last': ('int', last)
            }
        )
        return self.request('delete', resource, json.dumps({'revoke': True}))