func (term *Term) Update(properties map[string]interface{}) (map[string]interface{}, error) {
	b := term.csomBuilderEntry().Clone()
	objects := b.GetObjects()  
	termObject := objects[len(objects)-1]
	for prop, value := range properties {
		valueXML := fmt.Sprintf("%s", value)
		if strings.Index(prop, "<") == -1 {
			valueXML = fmt.Sprintf(`<Parameter Type="String">%s</Parameter>`, value)
		}
		b.AddAction(csom.NewSetProperty(prop, valueXML), termObject)
	}
	b.AddAction(csom.NewQueryWithProps([]string{}), termObject)  
	return csomResponse(term.client, term.endpoint, term.config, b)
}
Update sets term's properties
package api
import (
	"fmt"
	"strings"
	"github.com/koltyakov/gosip/csom"
)
type Terms struct {
	client   *HTTPClient
	config   *RequestConfig
	endpoint string
	csomEntry   csom.Builder
	selectProps []string
}
func (terms *Terms) csomBuilderEntry() csom.Builder {
	b := terms.csomEntry.Clone()
	return b
}
func (terms *Terms) Select(props string) *Terms {
	terms.selectProps = appendTaxonomyProp(terms.selectProps, props)
	return terms
}
func (terms *Terms) Get() ([]map[string]interface{}, error) {
	b := terms.csomEntry.Clone()
	b.AddAction(csom.NewQueryWithProps([]string{
		`<Property Name="Terms" SelectAll="true" />`,
	}), nil)
	return csomRespChildItemsInProp(terms.client, terms.endpoint, terms.config, b, "Terms")
}
func (terms *Terms) GetByID(termGUID string) *Term {
	return &Term{
		client:      terms.client,
		config:      terms.config,
		endpoint:    terms.endpoint,
		id:          trimTaxonomyGUID(termGUID),
		csomEntry:   terms.csomEntry,
		selectProps: []string{},
	}
}
func (terms *Terms) Add(name string, guid string, lcid int) (map[string]interface{}, error) {
	b := terms.csomBuilderEntry().Clone()
	b.AddObject(csom.NewObjectMethod("CreateTerm", []string{
		fmt.Sprintf(`<Parameter Type="String">%s</Parameter>`, name),
		fmt.Sprintf(`<Parameter Type="Number">%d</Parameter>`, lcid),
		fmt.Sprintf(`<Parameter Type="String">%s</Parameter>`, guid),
	}), nil)
	b.AddAction(csom.NewQueryWithProps([]string{}), nil)
	return csomResponse(terms.client, terms.endpoint, terms.config, b)
}
type Term struct {
	client   *HTTPClient
	config   *RequestConfig
	endpoint string
	id string
	csomEntry   csom.Builder
	selectProps []string
}
func (term *Term) csomBuilderEntry() csom.Builder {
	b := term.csomEntry.Clone()
	b.AddObject(csom.NewObjectMethod("GetTerm", []string{
		fmt.Sprintf(`<Parameter Type="String">%s</Parameter>`, term.id),
	}), nil)
	return b
}
func (term *Term) Select(props string) *Term {
	term.selectProps = appendTaxonomyProp(term.selectProps, props)
	return term
}
func (term *Term) Get() (map[string]interface{}, error) {
	var props []string
	for _, prop := range term.selectProps {
		propertyXML := prop
		if strings.Index(prop, "<") == -1 {
			propertyXML = fmt.Sprintf(`<Property Name="%s" SelectAll="true" />`, prop)
		}
		props = append(props, propertyXML)
	}
	b := term.csomBuilderEntry().Clone()
	b.AddAction(csom.NewQueryWithProps(props), nil)
	return csomResponse(term.client, term.endpoint, term.config, b)
}