docs: def _callJsonRPC(self, auth, callrequests, returnreq=False, notimeout=False):
          """Calls the Exosite One Platform RPC API.
              If returnreq is False, result is a tuple with this structure:
                  (success (boolean), response)
  
              If returnreq is True, result is a list of tuples with
              this structure:
                  (request, success, response)
              notimeout, if true, ignores reuseconnection setting, creating
              a new connection with no timeout.
                  """
          # get full auth (auth could be a CIK str)
          auth = self._getAuth(auth)
          jsonreq = {"auth": auth, "calls": callrequests}
          if self.logrequests:
              self._loggedrequests.append(jsonreq)
          body = json.dumps(jsonreq)
  
          def handle_request_exception(exception):
              raise JsonRPCRequestException(
                  "Failed to make http request: %s" % str(exception))
  
          body, response = self.onephttp.request('POST',
                                                 self.url,
                                                 body,
                                                 self.headers,
                                                 exception_fn=handle_request_exception,
                                                 notimeout=notimeout)
  
          def handle_response_exception(exception):
  
              raise JsonRPCResponseException(
                  "Failed to get response for request: %s %s" % (type(exception), str(exception)))
  
          try:
              res = json.loads(body)
          except:
              ex = sys.exc_info()[1]
              raise OnePlatformException(
                  "Exception while parsing JSON response: %s\n%s" % (body, ex))
          if isinstance(res, dict) and 'error' in res:
              raise OnePlatformException(str(res['error']))
          if isinstance(res, list):
              ret = []
              for r in res:
                  # first, find the matching request so we can return it
                  # along with the response.
                  request = None
                  for call in callrequests:
                      if call['id'] == r['id']:
                          request = call
                  if 'status' in r:
                      if 'ok' == r['status']:
                          if 'result' in r:
                              ret.append((request, True, r['result']))
                          else:
                              ret.append((request, True, 'ok'))
                      else:
                          ret.append((request, False, r['status']))
                  elif 'error' in r:
                      raise OnePlatformException(str(r['error']))
              if returnreq:
                  return ret
              else:
                  # backward compatibility: return just True/False and
                  # 'ok'/result/status as before
                  return ret[0][1:]
  
          raise OneException("Unknown error")