General information
View Menu V1 is considered obsolete. Please look at
View Menu V2 for a new version which supports nested groups
Views menu is a tree-like structure which represents a set of "views" available for the user.
Each menu item is either a view (e.g. board, report, dashboard, or even an entity) or a group of views.
Note that entity views are not supported at the moment and nested groups are supported only in View Menu V2.
Storage
Menu items are stored in Client Storage, which brings several implications:
- Each menu item consists of public data and user data storages,
- Menu items can't be queried or manipulated like regular resources.
Public/user data
Each menu item can be represented as a set of key-value pairs, stored in two dictionaries.
The first one is a "Public data" which contains the fields specified by the item's owner(s), e.g. board's name or cells definition.
These fields are considered shared between users and they represent the core essence of the menu item itself.
Public fields have a checked mark in "Is public" column of the types table below.
However, non-owner users can override some of the public data fields, e.g. a user may not be happy with the zoom level set by board owner and he may want to change it.
These user overrides are stored in a "user data".
When a user retrieves a menu item, API service first constructs a public data dictionary and then overrides its values with the values found in user data dictionary.
Not every field can belong to a user data, but those who can have a checked mark in "User can override" column of the types table.
Some fields are always user-specific and can't belong to the public data at all.
These fields have "User can override" mark but don't have "Is public" mark.
There are also special cases – when item owner or admin modifies his menu item, he may want to apply the changes of some fields to all users.
Such special fields have a checked mark in "Public for owner or admin" column of the types table.
Data formats
It is assumed that every field is stored in a client storage as a proper JSON value.
For example, the board name Hello, world
is stored as "Hello, world"
.
API service will try to compensate for the incorrect encodings, but it's better to ensure that you store the proper values when working with Client Storage directly.
The "Type" column of the types table lists the data types of specific fields.
JSON
means that there is no explicit knowledge of the underlying type of this field and that it can accept any dynamic JSON-value.
[TYPE_NAME]
means "collection of TYPE_NAME
".
Menu items
BoardDto
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
Acid |
String |
|
|
|
"Application context ID", representing saved teams and projects to be used as a context for the view |
AggregationsOnAxesSettings |
JSON |
|
|
|
Aggregations on axes settings |
CardSettings |
JSON |
|
|
|
Card customization settings for this view, describes a structure of card units for each selected cell entity. |
CellPaging |
JSON |
|
|
|
|
Cells |
BoardSpaceDefinition |
|
|
|
Data definition for slice cells |
Collapse |
JSON |
|
|
|
Expansion state of view lanes |
ColorSettings |
ColorSettings |
|
|
|
Color settings for cards on lists, boards, timelines and details view |
ColumnSizes |
JSON |
|
|
|
Sizes of view lanes – how much cards can be placed on a single row inside a column cell |
CreatedAt |
String |
|
|
|
View creation date |
CustomSharedData |
MenuItemCustomSharingState |
|
|
|
Team-/project-sharing settings |
DefaultUserFilters |
UserFilters |
|
|
|
Defines compiled default filters used by ViewContext services |
DisableInnerLevels |
Boolean |
|
|
|
Defines whether inner levels in lists (4th level) should be hidden |
DynamicProperties |
[KeyValuePair`2] |
|
|
|
|
Edit |
Boolean |
|
|
|
|
Focus |
JSON |
|
|
|
High-level board lane focusing settings |
HideEmptyLanes |
Boolean |
|
|
|
User-specific setting to hide empty lanes (i.e. lanes where all cells are empty) on view in "Board" or "Timeline" modes |
HierarchyMode |
String |
|
|
|
|
IsFavorite |
Boolean |
|
|
|
True if user marked item as favorite. False otherwise. |
IsShared |
Boolean |
|
|
|
Menu item access level. True if item is public or team-/project-shared |
ItemType |
MenuItemType |
|
|
|
|
Key |
String |
|
|
|
Unique menu item identifier |
LastOpenedAt |
String |
|
|
|
Date and time when particular view was opened last time. Serialized according to ISO 8601 |
Limits |
JSON |
|
|
|
|
ListUserSettings |
JSON |
|
|
|
Custom user settings for the list view mode |
MenuGroupKey |
String |
|
|
|
Id of the menu group this item belongs to |
MenuIsVisible |
Boolean |
|
|
|
True if item is visible in the user's menu, False if user decided to hide it |
MenuNumericPriority |
Double |
|
|
|
Numeric value determining the absolute position of the item in the menu. First menu items have lower values than the last ones |
MilestonesOnCardsSettings |
JSON |
|
|
|
Milestone on cards settings |
Name |
String |
|
|
|
|
OwnerIds |
[Int32] |
|
|
|
List of view menu item owner IDs |
Page |
PageSettings |
|
|
|
Current view paging settings |
PossibleViewModes |
JSON |
|
|
|
|
Prioritization |
JSON |
|
|
|
Card prioritization settings for the given view – JSON value with "mode" property, which can be true, false or "shift" to enable card prioritization, disable it or enable when SHIFT key is pressed |
SelectedMarks |
JSON |
|
|
|
Focused board lanes |
TimelineGlobalDateRange |
String |
|
|
|
|
TimelineIsCustomGlobalDateRange |
Boolean |
|
|
|
|
TimelineLocalDateRange |
String |
|
|
|
|
TimelineSettings |
TimelineSettings |
|
|
|
Timeline-specific view settings |
User |
JSON |
|
|
|
User-specific view settings, like custom filter |
UserAcid |
String |
|
|
|
User-specific "Application context ID" |
UserFilters |
UserFilters |
|
|
|
Defines compiled filters overrides per user used by ViewContext services |
ViewMode |
String |
|
|
|
Current view mode |
X |
BoardSpaceDefinition |
|
|
|
Data definition for the first slice dimension |
XGrouping |
JSON |
|
|
|
|
XGroupingStatus |
String |
|
|
|
|
Y |
BoardSpaceDefinition |
|
|
|
Data definition for the second slice dimension |
YGrouping |
JSON |
|
|
|
|
YGroupingStatus |
String |
|
|
|
|
ZoomLevel |
ZoomLevel |
|
|
|
Current size of the cards on the view, stored per view mode |
CustomReportDto
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
Acid |
String |
|
|
|
"Application context ID", representing saved teams and projects to be used as a context for the view |
CustomSharedData |
MenuItemCustomSharingState |
|
|
|
Team-/project-sharing settings |
DynamicProperties |
[KeyValuePair`2] |
|
|
|
|
Edit |
Boolean |
|
|
|
|
IsExternal |
Boolean |
|
|
|
|
IsFavorite |
Boolean |
|
|
|
True if user marked item as favorite. False otherwise. |
IsShared |
Boolean |
|
|
|
Menu item access level. True if item is public or team-/project-shared |
ItemType |
MenuItemType |
|
|
|
|
Key |
String |
|
|
|
Unique menu item identifier |
LastOpenedAt |
String |
|
|
|
Date and time when particular view was opened last time. Serialized according to ISO 8601 |
Link |
String |
|
|
|
|
MenuGroupKey |
String |
|
|
|
Id of the menu group this item belongs to |
MenuIsVisible |
Boolean |
|
|
|
True if item is visible in the user's menu, False if user decided to hide it |
MenuNumericPriority |
Double |
|
|
|
Numeric value determining the absolute position of the item in the menu. First menu items have lower values than the last ones |
Name |
String |
|
|
|
|
OwnerIds |
[Int32] |
|
|
|
List of view menu item owner IDs |
ReportSettings |
ReportSettings |
|
|
|
|
UserAcid |
String |
|
|
|
User-specific "Application context ID" |
DashboardDto
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
Acid |
String |
|
|
|
"Application context ID", representing saved teams and projects to be used as a context for the view |
CustomSharedData |
MenuItemCustomSharingState |
|
|
|
Team-/project-sharing settings |
DynamicProperties |
[KeyValuePair`2] |
|
|
|
|
Edit |
Boolean |
|
|
|
|
IsFavorite |
Boolean |
|
|
|
True if user marked item as favorite. False otherwise. |
IsShared |
Boolean |
|
|
|
Menu item access level. True if item is public or team-/project-shared |
ItemType |
MenuItemType |
|
|
|
|
Key |
String |
|
|
|
Unique menu item identifier |
LastOpenedAt |
String |
|
|
|
Date and time when particular view was opened last time. Serialized according to ISO 8601 |
Layout |
JSON |
|
|
|
|
MenuGroupKey |
String |
|
|
|
Id of the menu group this item belongs to |
MenuIsVisible |
Boolean |
|
|
|
True if item is visible in the user's menu, False if user decided to hide it |
MenuNumericPriority |
Double |
|
|
|
Numeric value determining the absolute position of the item in the menu. First menu items have lower values than the last ones |
Name |
String |
|
|
|
|
OwnerIds |
[Int32] |
|
|
|
List of view menu item owner IDs |
UserAcid |
String |
|
|
|
User-specific "Application context ID" |
MiroBoardDto
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
Acid |
String |
|
|
|
"Application context ID", representing saved teams and projects to be used as a context for the view |
CustomSharedData |
MenuItemCustomSharingState |
|
|
|
Team-/project-sharing settings |
DynamicProperties |
[KeyValuePair`2] |
|
|
|
|
Edit |
Boolean |
|
|
|
|
IsFavorite |
Boolean |
|
|
|
True if user marked item as favorite. False otherwise. |
IsShared |
Boolean |
|
|
|
Menu item access level. True if item is public or team-/project-shared |
ItemType |
MenuItemType |
|
|
|
|
Key |
String |
|
|
|
Unique menu item identifier |
LastOpenedAt |
String |
|
|
|
Date and time when particular view was opened last time. Serialized according to ISO 8601 |
MenuGroupKey |
String |
|
|
|
Id of the menu group this item belongs to |
MenuIsVisible |
Boolean |
|
|
|
True if item is visible in the user's menu, False if user decided to hide it |
MenuNumericPriority |
Double |
|
|
|
Numeric value determining the absolute position of the item in the menu. First menu items have lower values than the last ones |
MiroBoardData |
JSON |
|
|
|
|
Name |
String |
|
|
|
|
OwnerIds |
[Int32] |
|
|
|
List of view menu item owner IDs |
UserAcid |
String |
|
|
|
User-specific "Application context ID" |
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
CanAcceptItems |
Boolean |
|
|
|
True if the user has access to move the views to the group |
CustomSharedData |
MenuItemCustomSharingState |
|
|
|
Team-/project-sharing settings |
DynamicProperties |
[KeyValuePair`2] |
|
|
|
|
IsExpanded |
Boolean |
|
|
|
True if group is visually expanded in all section, and the user sees its items |
IsExpandedInFavorites |
Boolean |
|
|
|
True if group is visually expanded in favorites section, and the user sees its items |
IsFavorite |
Boolean |
|
|
|
True if user marked item as favorite. False otherwise. |
IsShared |
Boolean |
|
|
|
Menu item access level. True if item is public or team-/project-shared |
ItemType |
MenuItemType |
|
|
|
|
Key |
String |
|
|
|
Unique menu item identifier |
MenuGroupKey |
String |
|
|
|
Id of the menu group this item belongs to |
MenuIsVisible |
Boolean |
|
|
|
True if item is visible in the user's menu, False if user decided to hide it |
MenuNumericPriority |
Double |
|
|
|
Numeric value determining the absolute position of the item in the menu. First menu items have lower values than the last ones |
Name |
String |
|
|
|
|
OwnerIds |
[Int32] |
|
|
|
List of view menu item owner IDs |
ViewStatistics
Field name |
Type |
Is public |
User can override |
Public for owner or admin |
Description |
Key |
String |
|
|
|
Unique menu item identifier |
LastOpenedByAnotherUser |
String |
|
|
|
Date and time when the view was open last time by any user other than the current one. The format is ISO 8601. |
Data types
Represents possible types of view menu items
Property |
Type |
Description |
Unknown |
MenuItemType |
|
Board |
MenuItemType |
|
Group |
MenuItemType |
|
Section |
MenuItemType |
|
Dashboard |
MenuItemType |
|
CustomReport |
MenuItemType |
|
MiroBoard |
MenuItemType |
|
Describes custom sharing (team- or project-sharing) settings of menu item
Property |
Type |
Description |
IsActive |
Boolean |
On/off toggle for custom sharing. If this toggle is off, but the item.IsShared is true, then the item is publicly shared |
ProjectIds |
[Int32] |
Collection of project IDs this item is shared to |
TeamIds |
[Int32] |
Collection of team IDs this item is shared to |
UserIds |
[Int32] |
Collection of user IDs this item is shared to |
BoardSpaceDefinition
Describes a single dimension of multi-dimensional board, like lanes or cells, and the corresponding data request format acceptable by Slice API
Property |
Type |
Description |
Types |
[String] |
Collection of entity types on this slice level, e.g. a type board entity lane or types represented by cards on a board |
AxisGroup |
String |
Name of the group which axis type belongs to (Basic, Custom fields, Extendable Domain, etc.) |
FilterDisplay |
String |
A string representing a where-like data filter for this slice level. This is filter that is edited by user. It then transformed and copied to Filter field. |
Filter |
String |
A string representing a where-like data filter for this slice level. This is filter that is used in slice calls. See FilterDisplay. |
UseFilter |
Boolean |
A toggle enabling or disabling data filtering for the request |
Ordering |
OrderingDefinition |
Description the ordering applied to entity set |
OrderingDefinition
Property |
Type |
Description |
Name |
String |
Name of the the property the entity is ordered by |
DisplayName |
String |
Display Name of the property the entity is ordered by |
Direction |
OrderingDirection |
Ascending or descending ordering direction |
IsDefault |
Boolean |
Default ordering for resource |
OrderingDirection
Property |
Type |
Description |
Asc |
OrderingDirection |
|
Desc |
OrderingDirection |
|
TimelineSettings
Property |
Type |
Description |
ShowPlannedInPast |
Boolean |
|
ShowForecast |
Boolean |
|
ShowMilestones |
Boolean |
|
ShowPeriodLanes |
Boolean |
|
PageSettings
Property |
Type |
Description |
X |
Int32 |
|
Y |
Int32 |
|
ZoomLevel
Describes stored zoom levels (sizes of the cards displayed on a view) for various view modes
Property |
Type |
Description |
Board |
Int32 |
Zoom level on the "View" mode |
List |
Int32 |
Zoom level on the "One by one" mode |
Newlist |
Int32 |
Zoom level on the "List" mode |
Timeline |
Int32 |
Zoom level on the "Timeline" mode |
Menu structure
When getting a menu structure for a user with GetMenuTreeForCurrentUser
action,
the response is returned in a tree-like structure represented by a collection of MenuSection
items.
Each item has ItemType
property, determining its type, e.g. board or group, and ItemData
property containing the item data itself.
Additionaly, sections contain their groups and groups contain their item collections.
Here is the sample response of the menu structure API:
{
"items": [
{
"itemType": "section",
"itemData": {
"sectionType": "other"
},
"children": [
{
"itemType": "group",
"itemData": {
"key": "Ungrouped",
"itemType": "group"
},
"children": [
{
"itemType": "board",
"itemData": {
"key": "13",
"name": "Office library",
"itemType": "board"
}
},
{
"itemType": "board",
"itemData": {
"key": "14",
"name": "Roadmap",
"itemType": "board"
}
}
]
}
]
}
]
}
Operations
Here is a list of available API endpoints.
Description |
Parameters |
Returns |
CreateMenuGroup POST, PUT api/views/v1/group
Creates a new menu group using the posted data and assigns it a semi-randomly generated ID. |
|
|
CreateView POST, PUT api/views/v1/view
Creates a new view using the posted data and assigns it a semi-randomly generated ID. |
|
ViewDto
|
GetMenuTreeForCurrentUser GET api/views/v1
Constructs an entire view menu structure with sections and groups for the currently logged in user.
Applies visibility and access rights filters.
Use this method to get a visual representation of the menu user sees in the application. |
|
Not specified
|
GetViewsForGroup GET api/views/v1/view/forGroup/{groupId}
Retrieves the collection of views in group with the specified ID. |
|
Not specified
Collection of views in group
|
MenuGroup GET api/views/v1/group/{id}
Retrieves the information about the menu group with the specified ID.
Fails if the current user doesn't have access to the group or the group doesn't exist. |
|
|
MenuGroup POST api/views/v1/group/{id}
Updates the existing menu group if the current user has permissions to do that.
Creates a new one with the given ID if the group doesn't exist.
Can be used to restore the removed group data. |
|
Not specified
|
MenuGroup DELETE api/views/v1/group/{id}
Deletes the menu group with the specified ID.
Doesn't fail if the group doesn't exist.
Fails if the current user doesn't have access to it. |
|
Not specified
|
PrioritizeMenuGroup POST api/views/v1/prioritize/group
Changes the priority of the specified menu group, placing it before or after another one by modifying its priority value. |
-
itemId
(String)
ID of a group to prioritize
-
targetItemId
(String)
ID of a target group which is used as prioritization anchor
-
placeAfter
(Boolean)
True if item should be placed after target
|
Not specified
Collection of menu groups affected by prioritization
|
PrioritizeView POST api/views/v1/prioritize/view
Changes the priority of the specified view, placing it before or after another one by modifying its priority value. |
-
itemId
(String)
ID of a views to prioritize
-
targetItemId
(String)
ID of a target views which is used as prioritization anchor
-
placeAfter
(Boolean)
True if item should be placed after target
|
Not specified
Collection of views affected by prioritization
|
View GET api/views/v1/view/{id}
Retrieves the information about the view with the specified ID.
Fails if the current user doesn't have access to the view or the view doesn't exist. |
|
ViewDto
|
View POST api/views/v1/view/{id}
Updates the existing view if the current user has permissions to do that.
Creates a new one with the given ID if view doesn't exist.
Can be used to restore the removed view data. |
-
id
(String)
-
definition
(ViewDto)
|
ViewDto
|
View DELETE api/views/v1/view/{id}
Deletes the view with the specified ID.
Doesn't fail if the view doesn't exist.
Fails if the current user doesn't have access to it. |
|
Not specified
|
Remarks
Data update operations support partial data requests, which means only the fields explicitly specified in the request body are updated by the service.
For example, the following request will only update name
and isFavorite
fields but won't change cells
field or anything else.
{
name: "New name",
isFavorite: false
}
It also means that primitive values, like boolean or numeric, are actually stored as nullable values, so it's absolutely legal to post isFavorite: null
,
API will treat it as the 'absence of value' and won't change the field.
Similarly, if you receive a null value in the response, it means that the field doesn't have any value yet.