code: def request(
          self, method, path, data=None, files=None, json=None, params=None
      ):
          
          params = deepcopy(params) or {}
          params["raw_json"] = 1
          if isinstance(data, dict):
              data = deepcopy(data)
              data["api_type"] = "json"
              data = sorted(data.items())
          url = urljoin(self._requestor.oauth_url, path)
          return self._request_with_retries(
              data=data,
              files=files,
              json=json,
              method=method,
              params=params,
              url=url,
          )
docs: Return the json content from the resource at ``path``.
  
          :param method: The request verb. E.g., get, post, put.
          :param path: The path of the request. This path will be combined with
              the ``oauth_url`` of the Requestor.
          :param data: Dictionary, bytes, or file-like object to send in the body
              of the request.
          :param files: Dictionary, mapping ``filename`` to file-like object.
          :param json: Object to be serialized to JSON in the body of the
              request.
          :param params: The query parameters to send with the request.
  
          Automatically refreshes the access token if it becomes invalid and a
          refresh token is available. Raises InvalidInvocation in such a case if
          a refresh token is not available.