code: def get_all(cls, parent=None, **params):
  
          if parent is not None:
              route = copy(parent.route)
          else:
              route = {}
          if cls.ID_NAME is not None:
              # Empty string triggers "get all resources"
              route[cls.ID_NAME] = ""
  
          base_obj = cls(key=parent.key, route=route, config=parent.config)
          
  
          start = datetime.now()
          r = requests.get(
              base_obj._url(), auth=(base_obj.key, ""), params=params)
          cls._delay_for_ratelimits(start)
  
          if r.status_code not in cls.TRUTHY_CODES:
              return base_obj._handle_request_exception(r)
  
          response = r.json()
          objects_data = response.get(base_obj.ENVELOPE or base_obj, [])
  
          return_objects = []
          for data in objects_data:
              # Note that this approach does not get meta data
              return_objects.append(
                  cls.get(
                      parent=parent,
                      id=data.get(cls.ID_NAME, data.get("id")),
                      data=data))
  
          return return_objects
docs: Perform a read request against the resource