code: def changeKey(self, **kwargs):
          
          login_return = self._is_logged_in()
          #check the thing being changed
          if "thingUri" in kwargs:
              thingUri = kwargs['thingUri']
          elif "thing" in kwargs:
              thing = kwargs['thing']
              for t in self._getThings():
                  if 'NAME' in t:
                      if  t['NAME'] == thing and 'thingUri' in t:
                          thingUri = t['thingUri']
                          break
                      else:
                          raise ValueError('Unknown thing: ' + thing)
                  else:
                      raise ValueError('No things available.')
          else:
              return SyntaxError("Please provide either the 'thing' name or the 'thingUri' not both and at least one")
  
          if 'key' in kwargs:
              key = kwargs['key']
          else:
              raise SyntaxError("Please provide a key to change")
  
          if 'value' in kwargs:
              value = kwargs['value']
          else:
              raise SyntaxError("Please provide a value to change to")
  
          if key.lower().find('position'):
              if int(value) < 0 or int(value) > 100:
                  return ValueError("Please set the position between 0 and 100.")
  
          #prepare data payload
          data = {
              "data": {
                  str(key): str(value)
              },
              "path": "/thing" + thingUri,
              "host": "https://thing.brunt.co:8080"
          }
          
          #call the request method and return the response.
          resp = self._http.request(data, RequestTypes.PUT)
          resp.update(login_return)
          return resp
docs: Change a variable of the thing.  Mostly included for future additions.
  
          :param key: The value you want to change
          :param value: The new value
          :param thing: a string with the name of the thing, which is then checked using getThings.
          :param thingUri: Uri (string) of the thing you are getting the state from, not checked against getThings.
          :return: a dict with the state of the Thing.
          :raises: ValueError if the requested thing does not exists or the position is not between 0 and 100. 
              NameError if not logged in. SyntaxError when not exactly one of the params is given.