docs: def setup_client(self):
          """The command registers the client for communication protection. This
          will be used to obtain an access token via the Get Client Token
          command. The access token will be passed as a protection_access_token
          parameter to other commands.
  
          Note:
              If you are using the oxd-https-extension, you must setup the client
  
          Returns:
              **dict:** the client setup information
  
              Example response::
  
                  {
                      "oxd_id":"6F9619FF-8B86-D011-B42D-00CF4FC964FF",
                      "op_host": "<op host>",
                      "client_id":"<client id>",
                      "client_secret":"<client secret>",
                      "client_registration_access_token":"<Client registration access token>",
                      "client_registration_client_uri":"<URI of client registration>",
                      "client_id_issued_at":"<client_id issued at>",
                      "client_secret_expires_at":"<client_secret expires at>"
                  }
  
          """
          # add required params for the command
          params = {
              "authorization_redirect_uri": self.authorization_redirect_uri,
  			"oxd_rp_programming_language": "python",
              }
  
          # add other optional params if they exist in config
          for op in self.opt_params:
              if self.config.get("client", op):
                  params[op] = self.config.get("client", op)
  
          for olp in self.opt_list_params:
              if self.config.get("client", olp):
                  params[olp] = self.config.get("client", olp).split(",")
  
          logger.debug("Sending command `setup_client` with params %s", params)
  
          response = self.msgr.request("setup_client", **params)
          logger.debug("Received response: %s", response)
  
          if response['status'] == 'error':
              raise OxdServerError(response['data'])
          data = response["data"]
  
          self.oxd_id = data["oxd_id"]
          self.config.set("oxd", "id", data["oxd_id"])
          self.config.set("client", "client_id", data["client_id"])
          self.config.set("client", "client_secret", data["client_secret"])
          if data["client_registration_access_token"]:
              self.config.set("client", "client_registration_access_token",
                              data["client_registration_access_token"])
          if data["client_registration_client_uri"]:
              self.config.set("client", "client_registration_client_uri",
                              data["client_registration_client_uri"])
          self.config.set("client", "client_id_issued_at",
                          str(data["client_id_issued_at"]))
  
          return data