docs: def _query(profile,
             action=None,
             command=None,
             args=None,
             method='GET',
             header_dict=None,
             data=None,
             url='https://api.github.com/',
             per_page=None):
      '''
      Make a web call to the GitHub API and deal with paginated results.
      '''
      if not isinstance(args, dict):
          args = {}
  
      if action:
          url += action
  
      if command:
          url += '/{0}'.format(command)
  
      log.debug('GitHub URL: %s', url)
  
      if 'access_token' not in args.keys():
          args['access_token'] = _get_config_value(profile, 'token')
      if per_page and 'per_page' not in args.keys():
          args['per_page'] = per_page
  
      if header_dict is None:
          header_dict = {}
  
      if method != 'POST':
          header_dict['Accept'] = 'application/json'
  
      decode = True
      if method == 'DELETE':
          decode = False
  
      # GitHub paginates all queries when returning many items.
      # Gather all data using multiple queries and handle pagination.
      complete_result = []
      next_page = True
      page_number = ''
      while next_page is True:
          if page_number:
              args['page'] = page_number
          result = salt.utils.http.query(url,
                                         method,
                                         params=args,
                                         data=data,
                                         header_dict=header_dict,
                                         decode=decode,
                                         decode_type='json',
                                         headers=True,
                                         status=True,
                                         text=True,
                                         hide_fields=['access_token'],
                                         opts=__opts__,
                                         )
          log.debug('GitHub Response Status Code: %s',
                    result['status'])
  
          if result['status'] == 200:
              if isinstance(result['dict'], dict):
                  # If only querying for one item, such as a single issue
                  # The GitHub API returns a single dictionary, instead of
                  # A list of dictionaries. In that case, we can return.
                  return result['dict']
  
              complete_result = complete_result + result['dict']
          else:
              raise CommandExecutionError(
                  'GitHub Response Error: {0}'.format(result.get('error'))
              )
  
          try:
              link_info = result.get('headers').get('Link').split(',')[0]
          except AttributeError:
              # Only one page of data was returned; exit the loop.
              next_page = False
              continue
  
          if 'next' in link_info:
              # Get the 'next' page number from the Link header.
              page_number = link_info.split('>')[0].split('&page=')[1]
          else:
              # Last page already processed; break the loop.
              next_page = False
  
      return complete_result