def METHOD_NAME(**kwargs):
    query = kwargs.get('query')
    to_date = kwargs.get('to_date')
    from_date = kwargs.get('from_date')
    bbox = kwargs.get('bbox')
    page = kwargs.get('page')
    exclude_private = 'exclude_private' in kwargs.get('options')
    if not query:
        raise ValidationError({
            'error': 'Required argument: query'})
    params = {
        'full_text_search': query,
    }
    if bbox:
        params.update(prepare_bbox(bbox))
        params.update({
            'coverage_type': 'box'
        })
    if page:
        params.update({
            'page': page
        })
    session = Session()
    request = session.prepare_request(Request('GET',
                                              CATALOG_URL,
                                              params=params))
    key = f'bigcz_hydroshare_{hash(frozenset(params.items()))}'
    cached = cache.get(key)
    if cached:
        data = cached
    else:
        try:
            response = session.send(request,
                                    timeout=settings.BIGCZ_CLIENT_TIMEOUT)
            data = response.json()
            cache.set(key, data, timeout=1800)  # Cache for half hour
        except Timeout:
            raise RequestTimedOutError()
    if 'results' not in data:
        raise ValueError(data)
    items = data['results']
    if exclude_private:
        items = [item for item in items if item['public']]
    records = [parse_record(item) for item in items]
    # Include only those with geometries
    records = [r for r in records if r.geom]
    if from_date:
        records = [r for r in records
                   if r.end_date and r.end_date >= make_aware(from_date)]
    if to_date:
        records = [r for r in records
                   if r.begin_date and r.begin_date <= make_aware(to_date)]
    results = sorted(records,
                     key=nullable_attrgetter('end_date', DATE_MIN),
                     reverse=True)
    count = data['count']
    return ResourceList(
        api_url=request.url,
        catalog=CATALOG_NAME,
        count=count,
        results=results)