func (client *ClientImpl) GetTemplateRecommendations(ctx context.Context, args GetTemplateRecommendationsArgs) (*[]Template, error) {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	queryParams := url.Values{}
	if args.RepositoryType != nil {
		queryParams.Add("repositoryType", *args.RepositoryType)
	}
	if args.RepositoryId != nil {
		queryParams.Add("repositoryId", *args.RepositoryId)
	}
	if args.Branch != nil {
		queryParams.Add("branch", *args.Branch)
	}
	if args.ServiceConnectionId != nil {
		queryParams.Add("serviceConnectionId", (*args.ServiceConnectionId).String())
	}
	locationId, _ := uuid.Parse("63ea8f13-b563-4be7-bc31-3a96eda27220")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, queryParams, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue []Template
	err = client.Client.UnmarshalCollectionBody(resp, &responseValue)
	return &responseValue, err
}
[Preview API] Returns a list of all YAML templates with weighting based on which would best fit the given repository.
package cix
import (
	"bytes"
	"context"
	"encoding/json"
	"github.com/google/uuid"
	"github.com/microsoft/azure-devops-go-api/azuredevops"
	"net/http"
	"net/url"
)
type Client interface {
	CreateProjectConnection(context.Context, CreateProjectConnectionArgs) (*PipelineConnection, error)
	CreateResources(context.Context, CreateResourcesArgs) (*CreatedResources, error)
	GetConfigurations(context.Context, GetConfigurationsArgs) (*[]ConfigurationFile, error)
	GetDetectedBuildFrameworks(context.Context, GetDetectedBuildFrameworksArgs) (*[]DetectedBuildFramework, error)
	GetTemplateRecommendations(context.Context, GetTemplateRecommendationsArgs) (*[]Template, error)
	RenderTemplate(context.Context, RenderTemplateArgs) (*Template, 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) CreateProjectConnection(ctx context.Context, args CreateProjectConnectionArgs) (*PipelineConnection, error) {
	if args.CreateConnectionInputs == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.CreateConnectionInputs"}
	}
	queryParams := url.Values{}
	if args.Project == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "project"}
	}
	queryParams.Add("project", *args.Project)
	body, marshalErr := json.Marshal(*args.CreateConnectionInputs)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("00df4879-9216-45d5-b38d-4a487b626b2c")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", nil, queryParams, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue PipelineConnection
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateProjectConnectionArgs struct {
	CreateConnectionInputs *CreatePipelineConnectionInputs
	Project *string
}
func (client *ClientImpl) CreateResources(ctx context.Context, args CreateResourcesArgs) (*CreatedResources, error) {
	if args.CreationParameters == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.CreationParameters"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	body, marshalErr := json.Marshal(*args.CreationParameters)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("43201899-7690-4870-9c79-ab69605f21ed")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue CreatedResources
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateResourcesArgs struct {
	CreationParameters *map[string]ResourceCreationParameter
	Project *string
}
func (client *ClientImpl) GetConfigurations(ctx context.Context, args GetConfigurationsArgs) (*[]ConfigurationFile, error) {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	queryParams := url.Values{}
	if args.RepositoryType != nil {
		queryParams.Add("repositoryType", *args.RepositoryType)
	}
	if args.RepositoryId != nil {
		queryParams.Add("repositoryId", *args.RepositoryId)
	}
	if args.Branch != nil {
		queryParams.Add("branch", *args.Branch)
	}
	if args.ServiceConnectionId != nil {
		queryParams.Add("serviceConnectionId", (*args.ServiceConnectionId).String())
	}
	locationId, _ := uuid.Parse("8fc87684-9ebc-4c37-ab92-f4ac4a58cb3a")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, queryParams, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue []ConfigurationFile
	err = client.Client.UnmarshalCollectionBody(resp, &responseValue)
	return &responseValue, err
}
type GetConfigurationsArgs struct {
	Project *string
	RepositoryType *string
	RepositoryId *string
	Branch *string
	ServiceConnectionId *uuid.UUID
}
func (client *ClientImpl) GetDetectedBuildFrameworks(ctx context.Context, args GetDetectedBuildFrameworksArgs) (*[]DetectedBuildFramework, error) {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	queryParams := url.Values{}
	if args.RepositoryType != nil {
		queryParams.Add("repositoryType", *args.RepositoryType)
	}
	if args.RepositoryId != nil {
		queryParams.Add("repositoryId", *args.RepositoryId)
	}
	if args.Branch != nil {
		queryParams.Add("branch", *args.Branch)
	}
	if args.DetectionType != nil {
		queryParams.Add("detectionType", string(*args.DetectionType))
	}
	if args.ServiceConnectionId != nil {
		queryParams.Add("serviceConnectionId", (*args.ServiceConnectionId).String())
	}
	locationId, _ := uuid.Parse("29a30bab-9efb-4652-bf1b-9269baca0980")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, queryParams, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue []DetectedBuildFramework
	err = client.Client.UnmarshalCollectionBody(resp, &responseValue)
	return &responseValue, err
}
type GetDetectedBuildFrameworksArgs struct {
	Project *string
	RepositoryType *string
	RepositoryId *string
	Branch *string
	DetectionType *BuildFrameworkDetectionType
	ServiceConnectionId *uuid.UUID
}