code: func tagCategoryByName(client *tags.RestClient, name string) (string, error) {
  	ctx, cancel := context.WithTimeout(context.Background(), defaultAPITimeout)
  	defer cancel()
  	cats, err := client.GetCategoriesByName(ctx, name)
  	if err != nil {
  		return "", fmt.Errorf("could not get category for name %q: %s", name, err)
  	}
  
  	if len(cats) < 1 {
  		return "", fmt.Errorf("category name %q not found", name)
  	}
  	if len(cats) > 1 {
  		// Although GetCategoriesByName does not seem to think that tag categories
  		// are unique, empirical observation via the console and API show that they
  		// are. If for some reason the returned results includes more than one ID,
  		// we give an error, indicating that this is a bug and the user should
  		// submit an issue.
  		return "", fmt.Errorf(vSphereTagCategorySearchErrMultiple, name)
  	}
  
  	return cats[0].ID, nil
  }
docs: // tagCategoryByName locates a tag category by name. It's used by the
  // vsphere_tag_category data source, and the resource importer.