def update(self,
               clearEmptyFields=None,
               tags=None,
               thumbnail=None,
               password=None,
               fullname=None,
               email=None,
               securityQuestionIdx=None,
               securityAnswer=None,
               culture=None,
               region=None,
               userType=None
               ):
        """
        The Update User operation (POST only) modifies properties such as
        description, preferred view, tags, access, and thumbnail. The user
        name cannot be modified. For the "ecas" identity provider, password,
        e-mail, and full name must be modified by editing your Esri Global
        Account. For the "arcgis" identity provider, password, full name,
        security question, and security answer can be updated with Update
        User. Update User is available only to the user or to the
        administrator of the user's organization.
        Only the properties that are to be updated need to be specified in
        the request. Properties not specified will not be affected.

        Inputs:
        clearEmptyFields - Clears any fields that are passed in empty (for
                           example, description, tags).
        tags - Tags are words or short phrases that describe the user.
               Separate terms with commas.
               Example: tags=GIS Analyst, Redlands, cloud GIS
        thumbnail - Enter the pathname to the thumbnail image to be used
                    for the user. The recommended image size is 200 pixels
                    wide by 133 pixels high. Acceptable image formats are
                    PNG, GIF, and JPEG. The maximum file size for an image
                    is 1 MB. This is not a reference to the file but the
                    file itself, which will be stored on the sharing
                    servers.
                    Example: thumbnail=subfolder/thumbnail.jpg
        password -Password for the user. Only applicable for the arcgis
                  identity provider.
        fullname - The full name of the user. Only applicable for the
                   arcgis identity provider.
        email - The e-mail address of the user. Only applicable for the
                arcgis identity provider.
        securityQuestionIdx - The index of the security question the user
                wants to use. The security question is used for password
                recovery. Only applicable for the arcgis identity provider.
        securityAnswer - The answer to the security question for the user.
                         Only applicable for the arcgis identity provider.
        culture - Specifies the locale for which content is returned. The
                  browser/machine language setting is the default.
                  Authenticated users can set the culture and overwrite the
                  browser/machine language setting.
        region - Specifies the region of featured maps and apps and the
                 basemap gallery.
        userType - if the value is set to "both", then the value will allow
                   users to access both ArcGIS Org and the forums from this
                   account.  'arcgisorg' means the account is only valid
                   for the organizational site.  This is an AGOL only
                   parameter.
        """
        params = {
            "f" : "json"
        }
        if region is not None:
            params['region'] = region
        if culture is not None:
            params['culture'] = culture
        if clearEmptyFields is not None:
            params['clearEmptyFields'] = clearEmptyFields
        if tags is not None:
            params['tags'] = tags
        if password is not None:
            params['password'] = password
        if fullname is not None:
            params['fullname'] = fullname
        if email is not None:
            params['email'] = email
        if securityQuestionIdx is not None:
            params['securityQuestionIdx'] = securityQuestionIdx
        if securityAnswer is not None:
            params['securityAnswer'] = securityAnswer
        if userType is not None and \
           userType.lower() in ['both', 'arcgisorg','arcgisonly']:
            params['userType'] = userType.lower()
        files = {}


        url =  "%s/update" % self.root

        if thumbnail is not None and \
           os.path.isfile(thumbnail):
            files.append(('thumbnail', thumbnail, os.path.basename(thumbnail)))
        res = None
        if thumbnail is not None and \
           os.path.isfile(thumbnail):
            res = self._post(url=url,
                             param_dict=params,
                             files=files,
                             securityHandler=self._securityHandler,
                             proxy_url=self._proxy_url,
                             proxy_port=self._proxy_port)
        else:
            res = self._post(url=url,
                                 param_dict=params,
                                 securityHandler=self._securityHandler,
                                 proxy_url=self._proxy_url,
                                 proxy_port=self._proxy_port)
        self.__init()
        return res