code: def convexHull(self,
                     geometries,
                     sr=None):
          
          url = self._url + "/convexHull"
          params = {
              "f" : "json"
          }
  
          if isinstance(geometries, list) and len(geometries) > 0:
              g = geometries[0]
              if sr is not None:
                  params['sr'] = sr
              else:
                  params['sr'] = g._wkid
              if isinstance(g, Polygon):
                  params['geometries'] = {"geometryType": "esriGeometryPolygon",
                                          "geometries" : self.__geomToStringArray(geometries, "list")}
              elif isinstance(g, Point):
                  params['geometries'] = {"geometryType": "esriGeometryPoint",
                                          "geometries" : self.__geomToStringArray(geometries, "list")}
              elif isinstance(g, Polyline):
                  params['geometries'] = {"geometryType": "esriGeometryPolyline",
                                                          "geometries" : self.__geomToStringArray(geometries, "list")}
          else:
              return None
          return self._get(url=url,
                              param_dict=params,
                              securityHandler=self._securityHandler,
                              proxy_port=self._proxy_port,
                              proxy_url=self._proxy_url)
docs: The convexHull operation is performed on a geometry service resource. 
          It returns the convex hull of the input geometry. The input geometry can 
          be a point, multipoint, polyline, or polygon. The convex hull is typically 
          a polygon but can also be a polyline or point in degenerate cases.
          
          Inputs:
              geometries - array of geometries (structured as JSON geometry 
                           objects returned by the ArcGIS REST API).
              sr - spatial reference of the input geometries WKID.