Retrieve a file from the server containing the metadata
        and documents for the speficied items

        :type items: List or ItemGroup
        :param items: List of the the URLs of the items to download,
            or an ItemGroup object
        :type file_path: String
        :param file_path: the path to which to save the file
        :type file_format: String
        :param file_format: the file format to request from the server: specify
            either 'zip' or 'warc'

        :rtype: String
        :returns: the file path

        :raises: APIError if the API request is not successful

def download_items(self, items, file_path, file_format='zip'):
        """ Retrieve a file from the server containing the metadata
        and documents for the speficied items

        :type items: List or ItemGroup
        :param items: List of the the URLs of the items to download,
            or an ItemGroup object
        :type file_path: String
        :param file_path: the path to which to save the file
        :type file_format: String
        :param file_format: the file format to request from the server: specify
            either 'zip' or 'warc'

        :rtype: String
        :returns: the file path

        :raises: APIError if the API request is not successful


        """
        download_url = '/catalog/download_items'
        download_url += '?' + urlencode((('format', file_format),))
        item_data = {'items': list(items)}

        data = self.api_request(download_url, method='POST', data=json.dumps(item_data), raw=True)

        with open(file_path, 'w') as f:
            f.write(data)

        return file_path