code: def query(self, analysis_type, params, all_keys=False):
          
          if not self._order_by_is_valid_or_none(params):
              raise ValueError("order_by given is invalid or is missing required group_by.")
          if not self._limit_is_valid_or_none(params):
              raise ValueError("limit given is invalid or is missing required order_by.")
  
          url = "{0}/{1}/projects/{2}/queries/{3}".format(self.base_url, self.api_version,
                                                          self.project_id, analysis_type)
  
          headers = utilities.headers(self.read_key)
          payload = params
          response = self.fulfill(HTTPMethods.GET, url, params=payload, headers=headers, timeout=self.get_timeout)
          self._error_handling(response)
  
          response = response.json()
  
          if not all_keys:
              response = response["result"]
  
          return response
docs: Performs a query using the Keen IO analysis API.  A read key must be set first.