code: def search(
          self,
          token: dict = None,
          query: str = "",
          bbox: list = None,
          poly: str = None,
          georel: str = None,
          order_by: str = "_created",
          order_dir: str = "desc",
          page_size: int = 100,
          offset: int = 0,
          share: str = None,
          specific_md: list = [],
          include: list = [],
          whole_share: bool = True,
          check: bool = True,
          augment: bool = False,
          tags_as_dicts: bool = False,
          prot: str = "https",
      ) -> dict:
          specific_md = checker._check_filter_specific_md(specific_md)
          include = checker._check_filter_includes(include)
          payload = {
              "_id": specific_md,
              "_include": include,
              "_lang": self.lang,
              "_limit": page_size,
              "_offset": offset,
              "box": bbox,
              "geo": poly,
              "rel": georel,
              "ob": order_by,
              "od": order_dir,
              "q": query,
              "s": share,
          }
          if check:
              checker.check_request_parameters(payload)
          else:
              pass
          search_url = "{}://v1.{}.isogeo.com/resources/search".format(prot, self.api_url)
          try:
              search_req = self.get(
                  search_url,
                  headers=self.header,
                  params=payload,
                  proxies=self.proxies,
                  verify=self.ssl,
              )
          except Exception as e:
              logging.error(e)
              raise Exception
          checker.check_api_response(search_req)
          search_rez = search_req.json()
          resources_count = search_rez.get("total")
          if resources_count > page_size and whole_share:
              metadatas = []
              payload["_limit"] = 100
              for idx in range(0, int(ceil(resources_count / 100)) + 1):
                  payload["_offset"] = idx * 100
                  search_req = self.get(
                      search_url,
                      headers=self.header,
                      params=payload,
                      proxies=self.proxies,
                      verify=self.ssl,
                  )
                  metadatas.extend(search_req.json().get("results"))
              search_rez["results"] = metadatas
          else:
              pass
          if augment:
              self.add_tags_shares(search_rez.get("tags"))
              if share:
                  search_rez.get("query")["_shares"] = [share]
              else:
                  search_rez.get("query")["_shares"] = []
          else:
              pass
          if tags_as_dicts:
              new_tags = utils.tags_to_dict(
                  tags=search_rez.get("tags"), prev_query=search_rez.get("query")
              )
              search_rez.get("tags").clear()
              search_rez.get("query").clear()
              search_rez.get("tags").update(new_tags[0])
              search_rez.get("query").update(new_tags[1])
          else:
              pass
          return search_rez