

Last date modified: April 15 2025
As a sample use case, you might use the Tab Manager service to add specialized tab functionality to custom pages in a Relativity application developed for your organization.
You can also access the Tab Manager service through .NET. For more information, see Tab Manager (.NET).
Review the following guidelines for working with this service.
The URLs for REST endpoints contain path parameters that you need to set before making a call:
For example, you can use the following URL to retrieve a tab:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/{tabID}
Set the path parameters as follows:
When you create or update a tab, any field not included in the JSON request is automatically set to null or to a default value. For example, if the JSON for a request doesn't include the IsVisible field, then this field is automatically set to the default value of false.
Use the ReadAsync endpoint to retrieve all the properties and values set on a Tab object, and then only modify specific property values when updating the tab. This practice maintains the integrity of the data and avoids any inconsistencies. For more information, see Retrieve tab metadata and Update a tab.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"tab": {
"Name": "Aliases1234",
"Order": 100,
"LinkType": 3,
"ObjectType": {
"ArtifactTypeID": 10
},
"IsVisible": true,
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 1003663
}
}
}
}
Some requests contain the IconIdentifier field, which represents a string identifier for the icon displayed when the Tab appears in the sidebar.
The following table lists the available IconIdentifier values:
Icon |
String Identifier |
Name |
---|---|---|
|
sidebar-access |
Access |
|
sidebar-analytics |
Analytics |
|
sidebar-bar-chart |
Bar chart |
|
sidebar-case |
Case |
|
sidebar-case-dynamics |
Case dynamics |
|
sidebar-configure |
Configure |
|
sidebar-data-transfer |
Data transfer |
|
sidebar-documents |
Documents |
|
sidebar-download |
Download |
|
sidebar-export |
Export |
|
sidebar-folder |
Folder |
|
sidebar-infrastructure |
Infrastructure |
|
sidebar-monitor |
Monitor |
|
sidebar-page |
Page |
|
sidebar-pie-chart |
Pie chart |
|
sidebar-processing |
Processing |
|
sidebar-production |
Production |
|
sidebar-resources |
Resources |
|
sidebar-review |
Review |
|
sidebar-default-tab |
Tag |
|
sidebar-upload |
Upload |
|
sidebar-workspaces |
Workspaces |
You send a request to the Tab Manager service by making a call to an endpoint with the required HTTP method. See the following base URL for this service:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces
You can use the following .NET code as a sample client for creating a tab at the admin-level. This code illustrates how to perform the following general tasks:
Note: This code sample illustrates how to create the tab at the admin-level, so the workspace ID is set to -1 in the URL.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public async Task<int?> CreateTabExample()
{
int? result = null;
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("X-CSRF-Header", "-");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes("test@test.com:SomePassword")));
client.DefaultRequestHeaders.Add("X-Kepler-Version", "2.0");
client.BaseAddress = new Uri("https://localhost/");
var tabName = "SomeNewTab";
var order = 100;
string inputJSON = $"{{\"tab\":{{ \"Name\": \"{tabName}\", \"Order\": \"{order}\", \"LinkType\": 3, \"IsVisible\": true, \"Parent\": {{\"Value\": {{\"ArtifactID\": 1003663 }} }} }} }}";
var url = "/Relativity.REST/API/relativity-data-visualization/v1/workspaces/-1/tabs/";
var response = await client.PostAsync(url, new StringContent(inputJSON, Encoding.UTF8, "application/json"));
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<int>(content);
}
return result;
}
To create a new tab, send a POST request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs
The body of the request contains the following fields:
The following table summarizes the values used to represent link types:
Name | Value | Description |
---|---|---|
Unknown | 0 | Indicates an unknown link type. |
Object | 1 | Indicates that the tab links to a Relativity object. |
Link | 2 | Indicates that the tab links to a URL. |
Parent | 3 | Indicates that the tab may have sub-tabs. |
Available link types are included on the TabLinkTypeEnum enumeration.
Note: You can only create one tab per object type. After you create a tab for an object type, you can't reuse the Artifact ID to create another tab. Making a call with the Artifact ID returns an Invalid ObjectType error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"tabRequest": {
"Name": "Tab - Object",
"Order": 100,
"LinkType": 1,
"IsVisible": true,
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 1436126
}
},
"ObjectType": {
"Secured": false,
"Value": {
"ArtifactTypeID": 1000045
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"tabRequest": {
"Name": "Tab - Link",
"Order": 100,
"LinkType": 2,
"IsVisible": true,
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 1436126
}
},
"Link": "%ApplicationPath%/Admin/LinkTabExample/Example.aspx?%AppID%"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"tabRequest":{
"Name":"Aliases1234",
"Order": 100,
"LinkType":3,
"IsVisible":true,
"Parent":{
"Secured": false,
"Value": {
"ArtifactID": 1003663
}
}
}
}
The response contains a TabResponse object with the following fields:
ArtifactID - the Artifact ID of the object type.
Guids - an array of GUIDs used to identify the object type.
Name - the user-friendly name of the object type.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{
"ObjectIdentifier": {
"Name": "Workspaces",
"ArtifactID": 1015520,
"Guids": []
},
"Order": -1000,
"IsDefault": true,
"IsVisible": true,
"IsShownInSidebar": true,
"RelativityApplications": {
"HasSecuredItems": false,
"ViewableItems": []
},
"LinkType": "Object",
"CreatedOn": "2014-09-29T15:32:47.187",
"ObjectType": {
"Secured": false,
"Value": {
"ArtifactTypeID": 8,
"Name": "Workspace",
"ArtifactID": 1016187,
"Guids": []
}
},
"Parent": {
"Secured": false,
"Value": {
"Name": "System",
"ArtifactID": 62,
"Guids": [
"bd10a60d-b8ec-4928-84ee-6fc4f30d9612"
]
}
},
"IconIdentifier": "sidebar-workspaces",
"CreatedBy": {
"Secured": false,
"Value": {
"Name": "User1",
"ArtifactID": 1000987,
"Guids": []
}
},
"LastModifiedBy": {
"Secured": false,
"Value": {
"Name": "User2",
"ArtifactID": 1000777,
"Guids": []
}
},
"Meta": {
"Unsupported": [
"RelativityApplications"
],
"ReadOnly": []
},
"Actions": [
{
"Name": "Delete",
"Href": "relativity-data-visualization/v1/workspaces/-1/tabs/1015520",
"Verb": "DELETE",
"IsAvailable": false,
"Reason": [
"This tab cannot be deleted because it is a system tab."
]
},
{
"Name": "Update",
"Href": "relativity-data-visualization/v1/workspaces/-1/tabs/1015520",
"Verb": "PUT",
"IsAvailable": true,
"Reason": []
}
],
"LastModifiedOn": "2020-07-07T19:33:02.72"
}
You can retrieve basic or extended metadata for a tab. Extended metadata includes operations that you have permissions to perform on the tab, such as delete or update.
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/{tabID}
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/{tabID}?includeMetadata={includeMetadata}&includeActions={includeActions}
Set both the {includeMetadata} and {includeActions} path parameters to true.
The body of the request is empty.
The response for a read operation contains the same fields as a response for a create operation. See the field descriptions in View field descriptions for a create response.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{
"ObjectIdentifier": {
"Name": "Workspaces",
"ArtifactID": 1015520,
"Guids": []
},
"Order": -1000,
"IsDefault": true,
"IsVisible": true,
"IsShownInSidebar": true,
"RelativityApplications": {
"HasSecuredItems": false,
"ViewableItems": []
},
"LinkType": "Object",
"CreatedOn": "2014-09-29T15:32:47.187",
"ObjectType": {
"Secured": false,
"Value": {
"ArtifactTypeID": 8,
"Name": "Workspace",
"ArtifactID": 1016187,
"Guids": []
}
},
"Parent": {
"Secured": false,
"Value": {
"Name": "System",
"ArtifactID": 62,
"Guids": [
"bd10a60d-b8ec-4928-84ee-6fc4f30d9612"
]
}
},
"IconIdentifier": "sidebar-workspaces",
"CreatedBy": {
"Secured": false,
"Value": {
"Name": "User1",
"ArtifactID": 1000987,
"Guids": []
}
},
"LastModifiedBy": {
"Secured": false,
"Value": {
"Name": "User2",
"ArtifactID": 1000777,
"Guids": []
}
},
"Meta": {
"Unsupported": [
"RelativityApplications"
],
"ReadOnly": []
},
"Actions": [
{
"Name": "Delete",
"Href": "relativity-data-visualization/v1/workspaces/-1/tabs/1015520",
"Verb": "DELETE",
"IsAvailable": false,
"Reason": [
"This tab cannot be deleted because it is a system tab."
]
},
{
"Name": "Update",
"Href": "relativity-data-visualization/v1/workspaces/-1/tabs/1015520",
"Verb": "PUT",
"IsAvailable": true,
"Reason": []
}
],
"LastModifiedOn": "2020-07-07T19:33:02.72"
}
You can modify the properties of a tab, such as its name, order, and others. Additionally, you can restrict the update of a tab to the date that it was last modified by adding the LastModifiedOn field to the request.
Note: You need to unlock an application before making updates to the tabs that it contains. See Add components to an application.
Send a PUT request to the following URL:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/{tabID}
The body of the request depends on the type of link used for the tab. The sample JSON requests contain the various fields from the following list:
Parent - contains the following fields for the parent tab:
ArtifactID - the Artifact ID of the object type.
Guids - an array of GUIDs used to identify the object type.
Name - the user-friendly name of the object type.
Note: You can only create one tab per object type. After you create a tab for an object type, you can't reuse the Artifact ID to create another tab. Making a call with the Artifact ID returns an Invalid ObjectType error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"tabRequest": {
"Name": "Updated Tab - Object",
"Order": 100,
"LinkType": 1,
"IsVisible": true,
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 1436126
}
},
"ObjectType": {
"Secured": false,
"Value": {
"ArtifactTypeID": 1000045
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"tabRequest": {
"Name": " Updated Tab - Link",
"Order": 3,
"LinkType": 2,
"Link": "%ApplicationPath%/Admin/LinkTabExample/Example.aspx?%AppID%",
"IsVisible": true,
"Parent": {
"Secured": false,
"Value": {
"ArtifactID":1003663
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"tabRequest": {
"Name": "Alias",
"Order": 20,
"IsDefault": false,
"IsVisible": true,
"IsShownInSidebar": true,
"LinkType": "Parent",
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 62
}
},
"IconIdentifier": "sidebar-access"
}
}
The response for an update operation contains the same fields as a response for a create operation. See the field descriptions in View field descriptions for a create response.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"ObjectIdentifier": {
"Name": "Aliases12345",
"ArtifactID": 1018257,
"Guids": []
},
"Order": 100,
"IsDefault": false,
"IsVisible": true,
"IsShownInSidebar": false,
"RelativityApplications": {
"HasSecuredItems": false,
"ViewableItems": []
},
"LinkType": "Parent",
"CreatedOn": "2020-10-27T12:04:35.087",
"ObjectType": {
"Secured": false
},
"Parent": {
"Secured": false,
"Value": {
"Name": "User and Group Management",
"ArtifactID": 1015494,
"Guids": []
}
},
"CreatedBy": {
"Secured": false,
"Value": {
"Name": "User1",
"ArtifactID": 1000987,
"Guids": []
}
},
"LastModifiedBy": {
"Secured": false,
"Value": {
"Name": "User1",
"ArtifactID": 1000987,
"Guids": []
}
},
"LastModifiedOn": "2020-10-27T12:06:47.947"
}
You can remove a tab from Relativity if you have the appropriate permissions. For more information, see
Before you delete a tab, consider checking for other dependent tabs. See Object Manager (REST).
Send a DELETE request to the following URL:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspace/{workspaceID}/tabs/{tabID}
The body of the request is empty.
When the tab is successfully deleted, the response returns the status code of 200.
You can retrieving a list of all object types in a workspace available for creating or updating a tab. A tab must be associated it with an object.
Send a GET request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/eligible-object-types
The body of the request is empty.
The response contains the following fields:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
{
"ArtifactTypeID": 1000008,
"Name": "Scope",
"ArtifactID": 1016340,
"Guids": []
},
{
"ArtifactTypeID": 1000012,
"Name": "Sanitizer",
"ArtifactID": 1016493,
"Guids": []
}
]
You can retrieve a list of parent tabs, which you can associate with a tab when you add or edit it. In the Relativity UI, a parent tab displays a drop-down list containing child tabs.
Send a GET request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/eligible-parents
The body of the request is empty.
The response contains the following fields:
SupportedChildTypeLinkTypes - an array of link types that a child tab can have.
Name | Value | Description |
---|---|---|
Object | 1 | Indicates that the tab links to a Relativity object. |
Link | 2 | Indicates that the tab links to a URL. |
Parent | 3 | Indicates that the tab may have sub-tabs. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
{
"ObjectIdentifier": {
"Name": "Other Tabs",
"ArtifactID": 1018230,
"Guids": []
},
"SupportedChildTypeLinkTypes": [
"Object",
"Link",
"Parent"
]
}
]
You can retrieve workspace-level metadata about admin and system tabs. This metadata includes fields that can't be updated and those that aren't supported for a specific tab. In general, the following guidelines apply to this metadata:
Send a GET request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/meta
Note: Set {workspaceID} to -1 to indicate the admin-level context for system and admin tabs.
The body of the request is empty.
The response contains the following fields:
1
2
3
4
5
6
{
"Unsupported": [
"RelativityApplications"
],
"ReadOnly": []
}
You can retrieve current order of the tabs in a workspace. The order assigned to a tab determines its position in the Relativity UI. Tabs with a lower order number are displayed on the left, while those with higher order numbers are displayed on the right. For more information, see
Send a GET request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/view-order-list
The body of the request is empty.
The response contains the following fields:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[
{
"ObjectIdentifier": {
"Name": "Workspaces",
"ArtifactID": 1015520,
"Guids": []
},
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 62,
"Guids": []
}
},
"Order": -1000
},
{
"ObjectIdentifier": {
"Name": "User Status",
"ArtifactID": 1014996,
"Guids": []
},
"Parent": {
"Secured": false,
"Value": {
"ArtifactID": 62,
"Guids": []
}
},
"Order": -10
}]
You can retrieve information about each tab that the calling user can navigate to in a specific workspace. This endpoint returns a URL for navigating to each tab and tab metadata.
Send a GET request with a URL in the following format:
1
<host>/Relativity.Rest/API/relativity-data-visualization/{versionNumber}/workspaces/{workspaceID}/tabs/navigation
The body of the request is empty.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[
{
"ObjectIdentifier": {
"Name": "Workspaces",
"ArtifactID": 1015520,
"Guids": []
},
"ObjectTypeIdentifier": {
"Secured": false,
"Value": {
"ArtifactTypeID": 8,
"Name": "Workspace",
"ArtifactID": 1016187,
"Guids": []
}
},
"LinkType": "Object",
"Order": -1000,
"IsDefault": true,
"IsVisible": true,
"IsShownInSidebar": true,
"Url": "/Relativity/RelativityInternal.aspx?AppID=-1&ArtifactTypeID=8&ArtifactID=62&Mode=ListPage",
"IconIdentifier": "sidebar-workspaces"
},
{
"ObjectIdentifier": {
"Name": "User Status",
"ArtifactID": 1014996,
"Guids": []
},
"LinkType": "Link",
"Order": -10,
"IsDefault": false,
"IsVisible": true,
"IsShownInSidebar": true,
"Url": "/Relativity/External.aspx?AppID=-1&ArtifactID=-1&DirectTo=%25ApplicationPath%25%2fCustomPages%2f2ff16b11-a4ca-4f02-8bbb-1f07f23fe713%2fstaticObjects.html%23%2fstaticObjects%2fuserstatus",
"IconIdentifier": "sidebar-access"
}
]
On this page
Why was this not helpful?
Check one that applies.
Thank you for your feedback.
Want to tell us more?
Great!
Additional Resources |
|||
DevHelp Community | GitHub | Release Notes | NuGet |