code: def query(self,
                layerDefsFilter=None,
                geometryFilter=None,
                timeFilter=None,
                returnGeometry=True,
                returnIdsOnly=False,
                returnCountOnly=False,
                returnZ=False,
                returnM=False,
                outSR=None
                ):
          
          qurl = self._url + "/query"
          params = {"f": "json",
                    "returnGeometry": returnGeometry,
                    "returnIdsOnly": returnIdsOnly,
                    "returnCountOnly": returnCountOnly,
                    "returnZ": returnZ,
                    "returnM" : returnM}
          if not layerDefsFilter is None and \
             isinstance(layerDefsFilter, LayerDefinitionFilter):
              params['layerDefs'] = layerDefsFilter.filter
          if not geometryFilter is None and \
             isinstance(geometryFilter, GeometryFilter):
              gf = geometryFilter.filter
              params['geometryType'] = gf['geometryType']
              params['spatialRel'] = gf['spatialRel']
              params['geometry'] = gf['geometry']
              params['inSR'] = gf['inSR']
          if not outSR is None and \
             isinstance(outSR, SpatialReference):
              params['outSR'] = outSR.asDictionary
          if not timeFilter is None and \
             isinstance(timeFilter, TimeFilter):
              params['time'] = timeFilter.filter
  
          res = self._post(url=qurl,
                              param_dict=params,
                              securityHandler=self._securityHandler,
                              proxy_url=self._proxy_url,
                              proxy_port=self._proxy_port)
          if returnIdsOnly == False and returnCountOnly == False:
              if isinstance(res, str):
                  jd = json.loads(res)
                  return [FeatureSet.fromJSON(json.dumps(lyr)) for lyr in jd['layers']]
              elif isinstance(res, dict):
                  return [FeatureSet.fromJSON(json.dumps(lyr)) for lyr in res['layers']]
              else:
                  return res
          return res
docs: The Query operation is performed on a feature service resource