docs: def _make_headers(self, method, path, query={}, headers={}):
          '''
          Creates a headers object to sign the request
  
          Args:
              - method (str): HTTP method
              - path (str): Request path, e.g. /api/documents. No query string
              - query (dict, default={}): Query string in key-value format
              - headers (dict, default={}): Other headers to pass in
  
          Returns:
              - dict: Dictionary containing all headers
          '''
  
          date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
          nonce = self._make_nonce()
          ctype = headers.get('Content-Type') if headers.get('Content-Type') else 'application/json'
  
          auth = self._make_auth(method, date, nonce, path, query=query, ctype=ctype)
  
          req_headers = {
              'Content-Type': 'application/json',
              'Date': date,
              'On-Nonce': nonce,
              'Authorization': auth,
              'User-Agent': 'Onshape Python Sample App',
              'Accept': 'application/json'
          }
  
          # add in user-defined headers
          for h in headers:
              req_headers[h] = headers[h]
  
          return req_headers