func (client *ClientImpl) GetFeatures(ctx context.Context, args GetFeaturesArgs) (*[]ContributedFeature, error) {
	queryParams := url.Values{}
	if args.TargetContributionId != nil {
		queryParams.Add("targetContributionId", *args.TargetContributionId)
	}
	locationId, _ := uuid.Parse("c4209f25-7a27-41dd-9f04-06080c7b6afd")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", nil, queryParams, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue []ContributedFeature
	err = client.Client.UnmarshalCollectionBody(resp, &responseValue)
	return &responseValue, err
}
[Preview API] Get a list of all defined features
package featuremanagement
import (
	"bytes"
	"context"
	"encoding/json"
	"github.com/google/uuid"
	"github.com/microsoft/azure-devops-go-api/azuredevops"
	"net/http"
	"net/url"
)
type Client interface {
	GetFeature(context.Context, GetFeatureArgs) (*ContributedFeature, error)
	GetFeatures(context.Context, GetFeaturesArgs) (*[]ContributedFeature, error)
	GetFeatureState(context.Context, GetFeatureStateArgs) (*ContributedFeatureState, error)
	GetFeatureStateForScope(context.Context, GetFeatureStateForScopeArgs) (*ContributedFeatureState, error)
	QueryFeatureStates(context.Context, QueryFeatureStatesArgs) (*ContributedFeatureStateQuery, error)
	QueryFeatureStatesForDefaultScope(context.Context, QueryFeatureStatesForDefaultScopeArgs) (*ContributedFeatureStateQuery, error)
	QueryFeatureStatesForNamedScope(context.Context, QueryFeatureStatesForNamedScopeArgs) (*ContributedFeatureStateQuery, error)
	SetFeatureState(context.Context, SetFeatureStateArgs) (*ContributedFeatureState, error)
	SetFeatureStateForScope(context.Context, SetFeatureStateForScopeArgs) (*ContributedFeatureState, error)
}
type ClientImpl struct {
	Client azuredevops.Client
}
func NewClient(ctx context.Context, connection *azuredevops.Connection) Client {
	client := connection.GetClientByUrl(connection.BaseUrl)
	return &ClientImpl{
		Client: *client,
	}
}
func (client *ClientImpl) GetFeature(ctx context.Context, args GetFeatureArgs) (*ContributedFeature, error) {
	routeValues := make(map[string]string)
	if args.FeatureId == nil || *args.FeatureId == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.FeatureId"}
	}
	routeValues["featureId"] = *args.FeatureId
	locationId, _ := uuid.Parse("c4209f25-7a27-41dd-9f04-06080c7b6afd")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, nil, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue ContributedFeature
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type GetFeatureArgs struct {
	FeatureId *string
}