def query():
    """
    given {start_time, end_time, aggregation}
    return -> [{time, freq}, ...]
    """
    start_time = datetime.strptime(request.query.get("start_time"), '%Y-%m-%dT%H:%M:%SZ')
    end_time = datetime.strptime(request.query.get("end_time"), '%Y-%m-%dT%H:%M:%SZ')
    aggregation = request.query.get("aggregation")

    mg = MongoDB()
    mg.connect()

    print("querying time series...")
    results = mg.find( {'created_at': {'$gt': start_time, '$lt': end_time}} )

    results = Grid.get_ts(results, aggregation)

    ret = []
    for result in results:
        ret.append({'start_time': result[0].to_datetime().strftime('%Y-%m-%dT%H:%M:%SZ'),
                    'frequency': result[1].item()})

    response.content_type = 'application/json'
    return json_dumps(ret, indent=2)