docs: def scopes(self, name=None, pk=None, status=ScopeStatus.ACTIVE, **kwargs):
          # type: (Optional[str], Optional[str], Optional[str], **Any) -> List[Scope]
          """Return all scopes visible / accessible for the logged in user.
  
          If additional `keyword=value` arguments are provided, these are added to the request parameters. Please
          refer to the documentation of the KE-chain API for additional query parameters.
  
          :param name: if provided, filter the search for a scope/project by name
          :type name: basestring or None
          :param pk: if provided, filter the search by scope_id
          :type pk: basestring or None
          :param status: if provided, filter the search for the status. eg. 'ACTIVE', 'TEMPLATE', 'LIBRARY'
          :type status: basestring or None
          :param kwargs: optional additional search arguments
          :type kwargs: dict or None
          :return: list of `Scopes`
          :rtype: list(:class:`models.Scope`)
          :raises NotFoundError: if no scopes are not found.
  
          Example
          -------
  
          >>> client = Client(url='https://default.localhost:9443', verify=False)
          >>> client.login('admin','pass')
          >>> client.scopes()  # doctest: Ellipsis
          ...
  
          >>> client.scopes(name="Bike Project")  # doctest: Ellipsis
          ...
  
          >>> last_request = client.last_request  # doctest: Ellipsis
          ...
          """
          request_params = {
              'name': name,
              'id': pk,
              'status': status,
          }
          if kwargs:
              request_params.update(**kwargs)
  
          response = self._request('GET', self._build_url('scopes'), params=request_params)
  
          if response.status_code != requests.codes.ok:  # pragma: no cover
              raise NotFoundError("Could not retrieve scopes")
  
          data = response.json()
  
          return [Scope(s, client=self) for s in data['results']]