docs: def _query(server, method, parameters, timeout=DEFAULT_TIMEOUT, verify_ssl=True):
      """Formats and performs the query against the API.
  
      :param server: The MyGeotab server.
      :type server: str
      :param method: The method name.
      :type method: str
      :param parameters: The parameters to send with the query.
      :type parameters: dict
      :param timeout: The timeout to make the call, in seconds. By default, this is 300 seconds (or 5 minutes).
      :type timeout: float
      :param verify_ssl: If True, verify the SSL certificate. It's recommended not to modify this.
      :type verify_ssl: bool
      :raise MyGeotabException: Raises when an exception occurs on the MyGeotab server.
      :raise TimeoutException: Raises when the request does not respond after some time.
      :raise urllib2.HTTPError: Raises when there is an HTTP status code that indicates failure.
      :return: The JSON-decoded result from the server.
      """
      api_endpoint = get_api_url(server)
      params = dict(id=-1, method=method, params=parameters or {})
      headers = get_headers()
      with requests.Session() as session:
          session.mount('https://', GeotabHTTPAdapter())
          try:
              response = session.post(api_endpoint,
                                      data=json.dumps(params,
                                                      default=object_serializer),
                                      headers=headers, allow_redirects=True, timeout=timeout,
                                      verify=verify_ssl)
          except Timeout:
              raise TimeoutException(server)
      response.raise_for_status()
      content_type = response.headers.get('Content-Type')
      if content_type and 'application/json' not in content_type.lower():
          return response.text
      return _process(response.json(object_hook=object_deserializer))