code: func (c *CredentialGraphClient) Search(ctx context.Context, pathExp string,
  	ownerID *identity.ID, teamIDs []identity.ID) ([]CredentialGraph, error) {
  
  	query := url.Values{}
  
  	query.Set("pathexp", pathExp)
  	query.Set("owner_id", ownerID.String())
  	query.Set("mode", "contains")
  
  	for _, id := range teamIDs {
  		query.Add("team_id", id.String())
  	}
  
  	return c.getGraph(ctx, query)
  }
docs: // Search returns back all segments of the CredentialGraph (Keyring, Keyring
  // Members, and Credentials) that are contained within the given loose path
  // expression. It is loose in that it can have * for projects.