Each team in Azure DevOps Services can have one or more dashboards. Each dashboard contains a set of widgets.
The rest APIs have multi-user concurrency support for a list of widgets and for each widget, separately. This prevents one user of the API from overwriting changes of another user.
Lists of widgets are versioned using the eTag header in the list APIs. You must retrieve current eTag, and then provide that same eTag when updating the list.
The widget contract also contains the eTag property and works same way. This versions the settings of a single widget. This version is separate from the list version and you must provide it when updating a single widget.
Create a new dashboard
Add a new widget to a dashboard