code: func (h *Handler) GetSignerPaths(req *SignerPathsRequest) (*SignerPathsResponse, error) {
  	ctx := context.TODO()
  	if !req.Signer.Valid() {
  		return nil, errors.New("error getting signer paths: nil signer")
  	}
  	if !req.Target.Valid() {
  		return nil, errors.New("error getting signer paths: nil target")
  	}
  	h.index.RLock()
  	defer h.index.RUnlock()
  
  	paths, err := h.index.PathsOfSignerTarget(ctx, req.Signer, req.Target)
  	if err != nil {
  		return nil, fmt.Errorf("Error getting paths of %s: %v", req.Target.String(), err)
  	}
  	var jpaths []*SignerPathsItem
  	for _, path := range paths {
  		jpaths = append(jpaths, &SignerPathsItem{
  			ClaimRef: path.Claim,
  			BaseRef:  path.Base,
  			Suffix:   path.Suffix,
  		})
  	}
  
  	dr := h.NewDescribeRequest()
  	for _, path := range paths {
  		dr.StartDescribe(ctx, path.Base, 2)
  	}
  	metaMap, err := dr.metaMap()
  	if err != nil {
  		return nil, err
  	}
  
  	res := &SignerPathsResponse{
  		Paths: jpaths,
  		Meta:  metaMap,
  	}
  	return res, nil
  }
docs: // GetSignerPaths returns paths with a target of req.Target.