Submit a search query to the server and retrieve the results

        :type query: String
        :param query: the search query

        :rtype: ItemGroup
        :returns: the search results

        :raises: APIError if the API request is not successful

def search_metadata(self, query):
        """ Submit a search query to the server and retrieve the results

        :type query: String
        :param query: the search query

        :rtype: ItemGroup
        :returns: the search results

        :raises: APIError if the API request is not successful


        """
        query_url = ('/catalog/search?' +
                     urlencode((('metadata', query),)))

        resp = self.api_request(query_url)
        return ItemGroup(resp['items'], self)