code: def set(self, obj, id, payload, action='', async=False):
          
          self.url = '{}{}/{}'.format(self.base_url, obj, id)
          self.method = 'PUT'
          if action:
              self.url += '/{}'.format(action)
          self.payload = json.dumps(payload)
          if async:
              session = FuturesSession()
              return session.put(url=self.url, auth=self.auth,
                                 headers=self.headers, data=self.payload,
                                 cert=self.ca_cert)
          else:
              self.resp = requests.put(url=self.url, auth=self.auth,
                                       headers=self.headers, data=self.payload,
                                       cert=self.ca_cert)
              if self.__process_resp__(obj):
                  return self.res
              return False
docs: Function set
          Set an object by id
  
          @param obj: object name ('hosts', 'puppetclasses'...)
          @param id: the id of the object (name or id)
          @param action: specific action of an object ('power'...)
          @param payload: the dict of the payload
          @param async: should this request be async, if true use
                          return.result() to get the response
          @return RETURN: the server response