docs: def applyEdits(self,
                     addFeatures=[],
                     updateFeatures=[],
                     deleteFeatures=None,
                     gdbVersion=None,
                     rollbackOnFailure=True):
          """
             This operation adds, updates, and deletes features to the
             associated feature layer or table in a single call.
             Inputs:
                addFeatures - The array of features to be added.  These
                              features should be common.general.Feature
                              objects, or they should be a
                              common.general.FeatureSet object.
                updateFeatures - The array of features to be updateded.
                                 These features should be common.Feature
                                 objects
                deleteFeatures - string of OIDs to remove from service
                gdbVersion - Geodatabase version to apply the edits.
                rollbackOnFailure - Optional parameter to specify if the
                                    edits should be applied only if all
                                    submitted edits succeed. If false, the
                                    server will apply the edits that succeed
                                    even if some of the submitted edits fail.
                                    If true, the server will apply the edits
                                    only if all edits succeed. The default
                                    value is true.
             Output:
                dictionary of messages
          """
          editURL = self._url + "/applyEdits"
          params = {"f": "json",
                    'rollbackOnFailure' : rollbackOnFailure
                    }
          if not gdbVersion is None:
              params['gdbVersion'] = gdbVersion
          if len(addFeatures) > 0 and \
             isinstance(addFeatures[0], Feature):
              params['adds'] = json.dumps([f.asDictionary for f in addFeatures],
                                          default=_date_handler)
          elif isinstance(addFeatures, FeatureSet):
              params['adds'] = json.dumps([f.asDictionary for f in addFeatures],
                                          default=_date_handler)
          if len(updateFeatures) > 0 and \
             isinstance(updateFeatures[0], Feature):
              params['updates'] = json.dumps([f.asDictionary for f in updateFeatures],
                                             default=_date_handler)
          if deleteFeatures is not None and \
             isinstance(deleteFeatures, str):
              params['deletes'] = deleteFeatures
          return self._post(url=editURL, param_dict=params,
                               securityHandler=self._securityHandler,
                               proxy_port=self._proxy_port,
                               proxy_url=self._proxy_url)