docs: def solveServiceArea(self,facilities,method="POST",
                           barriers=None,
                           polylineBarriers=None,
                           polygonBarriers=None,
                           travelMode=None,
                           attributeParameterValues=None,
                           defaultBreaks=None,
                           excludeSourcesFromPolygons=None,
                           mergeSimilarPolygonRanges=None,
                           outputLines=None,
                           outputPolygons=None,
                           overlapLines=None,
                           overlapPolygons=None,
                           splitLinesAtBreaks=None,
                           splitPolygonsAtBreaks=None,
                           trimOuterPolygon=None,
                           trimPolygonDistance=None,
                           trimPolygonDistanceUnits=None,
                           returnFacilities=False,
                           returnBarriers=False,
                           returnPolylineBarriers=False,
                           returnPolygonBarriers=False,
                           outSR=None,
                           accumulateAttributeNames=None,
                           impedanceAttributeName=None,
                           restrictionAttributeNames=None,
                           restrictUTurns=None,
                           outputGeometryPrecision=None,
                           outputGeometryPrecisionUnits='esriUnknownUnits',
                           useHierarchy=None,
                           timeOfDay=None,
                           timeOfDayIsUTC=None,
                           travelDirection=None,
                           returnZ=False):
          """ The solve service area operation is performed on a network layer
          resource of type service area (layerType is esriNAServerServiceArea).
          You can provide arguments to the solve service area operation as
          query parameters.
          Inputs:
              facilities - The set of facilities loaded as network locations
                           during analysis. Facilities can be specified using
                           a simple comma / semi-colon based syntax or as a
                           JSON structure. If facilities are not specified,
                           preloaded facilities from the map document are used
                           in the analysis. If an empty json object is passed
                           ('{}') preloaded facilities are ignored.
              barriers - The set of barriers loaded as network locations during
                         analysis. Barriers can be specified using a simple
                         comma/semicolon-based syntax or as a JSON structure.
                         If barriers are not specified, preloaded barriers from
                         the map document are used in the analysis. If an empty
                         json object is passed ('{}'), preloaded barriers are
                         ignored.
              polylineBarriers - The set of polyline barriers loaded as network
                                 locations during analysis. If polyline barriers
                                 are not specified, preloaded polyline barriers
                                 from the map document are used in the analysis.
                                 If an empty json object is passed ('{}'),
                                 preloaded polyline barriers are ignored.
              polygonBarriers - The set of polygon barriers loaded as network
                                locations during analysis. If polygon barriers
                                are not specified, preloaded polygon barriers
                                from the map document are used in the analysis.
                                If an empty json object is passed ('{}'),
                                preloaded polygon barriers are ignored.
              travelMode - Travel modes provide override values that help you
                           quickly and consistently model a vehicle or mode of
                           transportation. The chosen travel mode must be
                           preconfigured on the network dataset that the
                           service area service references.
              attributeParameterValues - A set of attribute parameter values that
                                         can be parameterized to determine which
                                         network elements can be used by a vehicle.
              defaultBreaks - A comma-separated list of doubles. The default is
                              defined in the network analysis layer.
              excludeSourcesFromPolygons - A comma-separated list of string names.
                                           The default is defined in the network
                                           analysis layer.
  
              mergeSimilarPolygonRanges - If true, similar ranges will be merged
                                          in the result polygons. The default is
                                          defined in the network analysis layer.
              outputLines - The type of lines(s) generated. The default is as
                            defined in the network analysis layer.
              outputPolygons - The type of polygon(s) generated. The default is
                               as defined in the network analysis layer.
              overlapLines - Indicates if the lines should overlap from multiple
                             facilities. The default is defined in the network
                             analysis layer.
              overlapPolygons - Indicates if the polygons for all facilities
                                should overlap. The default is defined in the
                                network analysis layer.
              splitLinesAtBreaks - If true, lines will be split at breaks. The
                                   default is defined in the network analysis
                                   layer.
              splitPolygonsAtBreaks - If true, polygons will be split at breaks.
                                      The default is defined in the network
                                      analysis layer.
              trimOuterPolygon -  If true, the outermost polygon (at the maximum
                                  break value) will be trimmed. The default is
                                  defined in the network analysis layer.
              trimPolygonDistance -  If polygons are being trimmed, provides the
                                     distance to trim. The default is defined in
                                     the network analysis layer.
              trimPolygonDistanceUnits - If polygons are being trimmed, specifies
                                         the units of the trimPolygonDistance. The
                                         default is defined in the network analysis
                                         layer.
              returnFacilities - If true, facilities will be returned with the
                                 analysis results. Default is false.
              returnBarriers - If true, barriers will be returned with the analysis
                               results. Default is false.
              returnPolylineBarriers - If true, polyline barriers will be returned
                                       with the analysis results. Default is false.
              returnPolygonBarriers - If true, polygon barriers will be returned
                                      with the analysis results. Default is false.
              outSR - The well-known ID of the spatial reference for the geometries
                      returned with the analysis results. If outSR is not specified,
                      the geometries are returned in the spatial reference of the map.
              accumulateAttributeNames - The list of network attribute names to be
                                         accumulated with the analysis. The default
                                         is as defined in the network analysis layer.
                                         The value should be specified as a comma
                                         separated list of attribute names. You can
                                         also specify a value of none to indicate that
                                         no network attributes should be accumulated.
              impedanceAttributeName - The network attribute name to be used as the
                                       impedance attribute in analysis. The default
                                       is as defined in the network analysis layer.
              restrictionAttributeNames - The list of network attribute names to be
                                          used as restrictions with the analysis. The
                                          default is as defined in the network analysis
                                          layer. The value should be specified as a
                                          comma separated list of attribute names.
                                          You can also specify a value of none to
                                          indicate that no network attributes should
                                          be used as restrictions.
              restrictUTurns - Specifies how U-Turns should be restricted in the
                               analysis. The default is as defined in the network
                               analysis layer. Values: esriNFSBAllowBacktrack |
                               esriNFSBAtDeadEndsOnly | esriNFSBNoBacktrack |
                               esriNFSBAtDeadEndsAndIntersections
              outputGeometryPrecision - The precision of the output geometry after
                                        generalization. If 0, no generalization of
                                        output geometry is performed. The default is
                                        as defined in the network service configuration.
              outputGeometryPrecisionUnits - The units of the output geometry precision.
                                             The default value is esriUnknownUnits.
                                             Values: esriUnknownUnits | esriCentimeters |
                                             esriDecimalDegrees | esriDecimeters |
                                             esriFeet | esriInches | esriKilometers |
                                             esriMeters | esriMiles | esriMillimeters |
                                             esriNauticalMiles | esriPoints | esriYards
              useHierarchy - If true, the hierarchy attribute for the network should be
                             used in analysis. The default is as defined in the network
                             layer. This cannot be used in conjunction with outputLines.
              timeOfDay - The date and time at the facility. If travelDirection is set
                          to esriNATravelDirectionToFacility, the timeOfDay value
                          specifies the arrival time at the facility. if travelDirection
                          is set to esriNATravelDirectionFromFacility, the timeOfDay
                          value is the departure time from the facility. The time zone
                          for timeOfDay is specified by timeOfDayIsUTC.
              timeOfDayIsUTC - The time zone or zones of the timeOfDay parameter. When
                               set to false, which is the default value, the timeOfDay
                               parameter refers to the time zone or zones in which the
                               facilities are located. Therefore, the start or end times
                               of the service areas are staggered by time zone.
              travelDirection - Options for traveling to or from the facility. The
                                default is defined in the network analysis layer.
              returnZ - If true, Z values will be included in saPolygons and saPolylines
                        geometry if the network dataset is Z-aware.
      """
          if not self.layerType == "esriNAServerServiceAreaLayer":
              raise ValueError("The solveServiceArea operation is supported on a network "
                               "layer of Service Area type only")
  
          url = self._url + "/solveServiceArea"
          params = {
                  "f" : "json",
                  "facilities": facilities
                  }
  
          if not barriers is None:
              params['barriers'] = barriers
          if not polylineBarriers is None:
              params['polylineBarriers'] = polylineBarriers
          if not polygonBarriers is None:
              params['polygonBarriers'] = polygonBarriers
          if not travelMode is None:
              params['travelMode'] = travelMode
          if not attributeParameterValues is None:
              params['attributeParameterValues'] = attributeParameterValues
          if not defaultBreaks is None:
              params['defaultBreaks'] = defaultBreaks
          if not excludeSourcesFromPolygons is None:
              params['excludeSourcesFromPolygons'] = excludeSourcesFromPolygons
          if not mergeSimilarPolygonRanges is None:
              params['mergeSimilarPolygonRanges'] = mergeSimilarPolygonRanges
          if not outputLines is None:
              params['outputLines'] = outputLines
          if not outputPolygons is None:
              params['outputPolygons'] = outputPolygons
          if not overlapLines is None:
              params['overlapLines'] = overlapLines
          if not overlapPolygons is None:
              params['overlapPolygons'] = overlapPolygons
          if not splitLinesAtBreaks is None:
              params['splitLinesAtBreaks'] = splitLinesAtBreaks
          if not splitPolygonsAtBreaks is None:
              params['splitPolygonsAtBreaks'] = splitPolygonsAtBreaks
          if not trimOuterPolygon is None:
              params['trimOuterPolygon'] = trimOuterPolygon
          if not trimPolygonDistance is None:
              params['trimPolygonDistance'] = trimPolygonDistance
          if not trimPolygonDistanceUnits is None:
              params['trimPolygonDistanceUnits'] = trimPolygonDistanceUnits
          if not returnFacilities is None:
              params['returnFacilities'] = returnFacilities
          if not returnBarriers is None:
              params['returnBarriers'] = returnBarriers
          if not returnPolylineBarriers is None:
              params['returnPolylineBarriers'] = returnPolylineBarriers
          if not returnPolygonBarriers is None:
              params['returnPolygonBarriers'] = returnPolygonBarriers
          if not outSR is None:
              params['outSR'] = outSR
          if not accumulateAttributeNames is None:
              params['accumulateAttributeNames'] = accumulateAttributeNames
          if not impedanceAttributeName is None:
              params['impedanceAttributeName'] = impedanceAttributeName
          if not restrictionAttributeNames is None:
              params['restrictionAttributeNames'] = restrictionAttributeNames
          if not restrictUTurns is None:
              params['restrictUTurns'] = restrictUTurns
          if not outputGeometryPrecision is None:
              params['outputGeometryPrecision'] = outputGeometryPrecision
          if not outputGeometryPrecisionUnits is None:
              params['outputGeometryPrecisionUnits'] = outputGeometryPrecisionUnits
          if not useHierarchy is None:
              params['useHierarchy'] = useHierarchy
          if not timeOfDay is None:
              params['timeOfDay'] = timeOfDay
          if not timeOfDayIsUTC is None:
              params['timeOfDayIsUTC'] = timeOfDayIsUTC
          if not travelDirection is None:
              params['travelDirection'] = travelDirection
          if not returnZ is None:
              params['returnZ'] = returnZ
  
          if method.lower() == "post":
              return self._post(url=url,
                                   param_dict=params,
                                   securityHandler=self._securityHandler,
                                   proxy_url=self._proxy_url,
                                   proxy_port=self._proxy_port)
          else:
              return self._get(url=url,
                                  param_dict=params,
                                  securityHandler=self._securityHandler,
                                  proxy_url=self._proxy_url,
                                  proxy_port=self._proxy_port)