code: def _send_paginated_message(self, endpoint, params=None):
          
          if params is None:
              params = dict()
          url = self.url + endpoint
          while True:
              r = self.session.get(url, params=params, auth=self.auth, timeout=30)
              results = r.json()
              for result in results:
                  yield result
              # If there are no more pages, we're done. Otherwise update `after`
              # param to get next page.
              # If this request included `before` don't get any more pages - the
              # cbpro API doesn't support multiple pages in that case.
              if not r.headers.get('cb-after') or \
                      params.get('before') is not None:
                  break
              else:
                  params['after'] = r.headers['cb-after']
docs: Send API message that results in a paginated response.
  
          The paginated responses are abstracted away by making API requests on
          demand as the response is iterated over.
  
          Paginated API messages support 3 additional parameters: `before`,
          `after`, and `limit`. `before` and `after` are mutually exclusive. To
          use them, supply an index value for that endpoint (the field used for
          indexing varies by endpoint - get_fills() uses 'trade_id', for example).
              `before`: Only get data that occurs more recently than index
              `after`: Only get data that occurs further in the past than index
              `limit`: Set amount of data per HTTP response. Default (and
                  maximum) of 100.
  
          Args:
              endpoint (str): Endpoint (to be added to base URL)
              params (Optional[dict]): HTTP request parameters
  
          Yields:
              dict: API response objects