func (client *ClientImpl) GetDashboard(ctx context.Context, args GetDashboardArgs) (*Dashboard, error) {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.Team != nil && *args.Team != "" {
		routeValues["team"] = *args.Team
	}
	if args.DashboardId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.DashboardId"}
	}
	routeValues["dashboardId"] = (*args.DashboardId).String()
	locationId, _ := uuid.Parse("454b3e51-2e6e-48d4-ad81-978154089351")
	resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.2", routeValues, nil, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue Dashboard
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
[Preview API] Get a dashboard by its ID.
package dashboard
import (
	"bytes"
	"context"
	"encoding/json"
	"github.com/google/uuid"
	"github.com/microsoft/azure-devops-go-api/azuredevops"
	"net/http"
	"net/url"
)
var ResourceAreaId, _ = uuid.Parse("31c84e0a-3ece-48fd-a29d-100849af99ba")
type Client interface {
	CreateDashboard(context.Context, CreateDashboardArgs) (*Dashboard, error)
	CreateWidget(context.Context, CreateWidgetArgs) (*Widget, error)
	DeleteDashboard(context.Context, DeleteDashboardArgs) error
	DeleteWidget(context.Context, DeleteWidgetArgs) (*Dashboard, error)
	GetDashboard(context.Context, GetDashboardArgs) (*Dashboard, error)
	GetDashboards(context.Context, GetDashboardsArgs) (*DashboardGroup, error)
	GetWidget(context.Context, GetWidgetArgs) (*Widget, error)
	GetWidgetMetadata(context.Context, GetWidgetMetadataArgs) (*WidgetMetadataResponse, error)
	GetWidgets(context.Context, GetWidgetsArgs) (*WidgetsVersionedList, error)
	GetWidgetTypes(context.Context, GetWidgetTypesArgs) (*WidgetTypesResponse, error)
	ReplaceDashboard(context.Context, ReplaceDashboardArgs) (*Dashboard, error)
	ReplaceDashboards(context.Context, ReplaceDashboardsArgs) (*DashboardGroup, error)
	ReplaceWidget(context.Context, ReplaceWidgetArgs) (*Widget, error)
	ReplaceWidgets(context.Context, ReplaceWidgetsArgs) (*WidgetsVersionedList, error)
	UpdateWidget(context.Context, UpdateWidgetArgs) (*Widget, error)
	UpdateWidgets(context.Context, UpdateWidgetsArgs) (*WidgetsVersionedList, error)
}
type ClientImpl struct {
	Client azuredevops.Client
}
func NewClient(ctx context.Context, connection *azuredevops.Connection) (Client, error) {
	client, err := connection.GetClientByResourceAreaId(ctx, ResourceAreaId)
	if err != nil {
		return nil, err
	}
	return &ClientImpl{
		Client: *client,
	}, nil
}
func (client *ClientImpl) CreateDashboard(ctx context.Context, args CreateDashboardArgs) (*Dashboard, error) {
	if args.Dashboard == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.Dashboard"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.Team != nil && *args.Team != "" {
		routeValues["team"] = *args.Team
	}
	body, marshalErr := json.Marshal(*args.Dashboard)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("454b3e51-2e6e-48d4-ad81-978154089351")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.2", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue Dashboard
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateDashboardArgs struct {
	Dashboard *Dashboard
	Project *string
	Team *string
}
func (client *ClientImpl) CreateWidget(ctx context.Context, args CreateWidgetArgs) (*Widget, error) {
	if args.Widget == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.Widget"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.Team != nil && *args.Team != "" {
		routeValues["team"] = *args.Team
	}
	if args.DashboardId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.DashboardId"}
	}
	routeValues["dashboardId"] = (*args.DashboardId).String()
	body, marshalErr := json.Marshal(*args.Widget)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("bdcff53a-8355-4172-a00a-40497ea23afc")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.2", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue Widget
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateWidgetArgs struct {
	Widget *Widget
	Project *string
	DashboardId *uuid.UUID
	Team *string
}
func (client *ClientImpl) DeleteDashboard(ctx context.Context, args DeleteDashboardArgs) error {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.Team != nil && *args.Team != "" {
		routeValues["team"] = *args.Team
	}
	if args.DashboardId == nil {
		return &azuredevops.ArgumentNilError{ArgumentName: "args.DashboardId"}
	}
	routeValues["dashboardId"] = (*args.DashboardId).String()
	locationId, _ := uuid.Parse("454b3e51-2e6e-48d4-ad81-978154089351")
	_, err := client.Client.Send(ctx, http.MethodDelete, locationId, "5.1-preview.2", routeValues, nil, nil, "", "application/json", nil)
	if err != nil {
		return err
	}
	return nil
}
type DeleteDashboardArgs struct {
	Project *string
	DashboardId *uuid.UUID
	Team *string
}
func (client *ClientImpl) DeleteWidget(ctx context.Context, args DeleteWidgetArgs) (*Dashboard, error) {
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.Team != nil && *args.Team != "" {
		routeValues["team"] = *args.Team
	}
	if args.DashboardId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.DashboardId"}
	}
	routeValues["dashboardId"] = (*args.DashboardId).String()
	if args.WidgetId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.WidgetId"}
	}
	routeValues["widgetId"] = (*args.WidgetId).String()
	locationId, _ := uuid.Parse("bdcff53a-8355-4172-a00a-40497ea23afc")
	resp, err := client.Client.Send(ctx, http.MethodDelete, locationId, "5.1-preview.2", routeValues, nil, nil, "", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue Dashboard
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type DeleteWidgetArgs struct {
	Project *string
	DashboardId *uuid.UUID
	WidgetId *uuid.UUID
	Team *string
}