code: def get(self, entity, id=None, sub_entity=None, offset=0, limit=20,
              search_terms=None, sync=True):
          
          url = urljoin(self.host, entity.value + '/')
          url = urljoin(url, id + '/') if id else url
          url = urljoin(url, sub_entity.value + '/') if sub_entity else url
          terms = {'sync': str(sync).lower()}
          if search_terms:
              terms.update(search_terms)
          if not id:
              terms.update({'limit': limit, 'offset': offset})
          url = Utils.add_url_parameters(url, terms)
          r = requests.get(url, auth=self.auth, headers=self.headers)
          if sub_entity == Entity.Content:
              return r.content
          elif r.ok:
              j = r.json()
  
              if 'meta' not in j:
                  # TODO: Fix error in API. No meta data returned when getting a
                  # single object.
                  return {'objects': [j]}
  
              next_path = j['meta']['next']
  
              while next_path:
                  offset += limit
                  url = urljoin(self.host, entity.value + '/')
                  url = urljoin(url, id + '/') if id else url
                  url = urljoin(
                      url, sub_entity.value + '/') if sub_entity else url
                  terms = {'offset': offset}
                  url = Utils.add_url_parameters(
                      url, {'offset': offset})
                  r = requests.get(url, auth=self.auth, headers=self.headers)
                  j['objects'].extend(r.json()['objects'])
                  next_path = r.json()['meta']['next']
  
              return j['objects']
          else:
              raise CoredataError(
                  'Error occured! Status code is {code} for {url}'.format(
                      code=r.status_code, url=url))
docs: Get all entities that fufill the given filtering if provided.
  
          :todo: Rename search_terms