

Visit Relativity Learning to explore additional learning opportunities for this topic.
Last date modified: June 17 2025
Legal Hold API includes APIs for authorization with Graph API and a public endpoint for getting active custodian details. To view the Legal Hold API, click Legal Hold REST API Reference
The following APIs can be used for any matter or project management function, including integrating with matter management systems.
The ActiveCustodianSummary endpoint provides a list of all custodians who are actively on-hold. Released custodians are not included. 1000 records maximum can be returned at a time, but you can adjust the StartingIndex parameter to pull more back if you get 1000. If a user is on hold for multiple projects, they still only have a single entry in the returned JSON.
API returns JSON including the following information:
This endpoint can be used for getting JSON-formatted data and parsing it for your own internal systems or reporting. While reporting functionality exists within Relativity to get the same or similar data, this endpoint makes it easy to get the data you need quickly and easily with your existing system.
EmployeeNumber and UniqueID are fields that are used differently by each organization. They are returned as strings to accommodate each tenant's needs. For some tenants, these are empty strings as the fields are not used by the organization.
1
2
3
/Relativity.Rest/API/kCura.LegalHold.Services.ILegalHoldModule/Custodian-Request-Manager/ActiveCustodianSummary?workspaceId={workspaceID}&startingIndex={startingIndex}&length={length}
Example: /Relativity.Rest/API/kCura.LegalHold.Services.ILegalHoldModule/Custodian-Request-Manager/ActiveCustodianSummary?workspaceId=3961297&startingIndex=0&length=500
JSON request (If the body is empty, indicate that here. Provide information about any fields in the request that need special handling or need additional explanation.)
1
2
3
4
5
Request body will be empty
Parameters:
WorkspaceID = The Artifact ID of the workspace you are querying
StartingIndex = The starting index for your query. 1 and 0 are both treated as 0. Use this for paging your request.
Lentgh = Maximum value of 1000, dictates how many records are returned
JSON response (If the body is empty, indicate what is returned, such as ArtifactID or status code. Provide information about any fields in the request that need additional explanation.)
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
[
{
"ProjectID": 1042311,
"FullName": "Doe, John",
"FirstName": "John",
"LastName": "Doe",
"EmailAddress": "johndoe@example.com",
"EmployeeNumber": "111",
"UniqueID": "johndoe111"
},
{
"ProjectID": 1042311,
"FullName": "Johnson, Bob",
"FirstName": "Bob",
"LastName": "Johnson",
"EmailAddress": "bobjohnson@example.com",
"EmployeeNumber": "",
"UniqueID": ""
},
{
"ProjectID": 1042042,
"FullName": "Howard, Catherine",
"FirstName": "Catherine",
"LastName": "Howard",
"EmailAddress": CathyHoward@example.com",
"EmployeeNumber": "333",
"UniqueID": "cathy333"
},
{
"ProjectID": 1042311,
"FullName": "Howard, Catherine",
"FirstName": "Catherine",
"LastName": "Howard",
"EmailAddress": CathyHoward@example.com",
"EmployeeNumber": "333",
"UniqueID": "cathy333"
}
]
The following REST calls create a Legal Hold project with the following fields:
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/create
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
{
"Request":{
"ObjectType":{
"Name": "Project"
},
"FieldValues":[
{
"Field":{
"Name": "Name"
},
"Value":"Postman Test Project"
},
{
"Field":{
"Name": "Owner Email"
},
"Value":"myemail@relativity.com"
},
{
"Field":{
"Name": "Use as Template"
},
"Value":false
},
{
"Field":{
"Name": "Project Status"
},
"Value":{
"ArtifactID":1067257
}
}
]
}
}
The following REST call returns the names of all Legal Hold projects in the workspace.
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/query
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"Request":{
"ObjectType":{
"Name": "Project"
},
"fields":[
{"Name": "Name"}
],
"sorts":[
]
},
"start":1,
"length":100
}
The following REST call returns the names of all Custodians and their role on a Legal Hold project.
Replace the ID in "condition" with the Project ArtifactID which you are trying to query from.
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/query
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"Request":{
"ObjectType":{
"Name": "Custodian Role"
},
"fields":[
{"Name": "Custodian"},
{"Name": "Role"}
],
"condition":" 'Project' == <project_artifact_id>",
"sorts":[
]
},
"start":1,
"length":100
}
The following REST call adds a communication to a Legal Hold project with the following fields:
Optional BCC fields:
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/create
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
{
"Request":{
"ObjectType":{
"Name": "Communication"
},
"FieldValues":[
{
"Field":{
"Name": "Name"
},
"Value":"Postman Test Communication 2"
},
{
"Field":{
"Name": "Acknowledgement Required"
},
"Value":false
},
{
"Field":{
"Name": "Communication Type"
},
"Value":{"ArtifactID":<communication_type_choice_id>}
},
{
"Field":{
"Name": "DisplayInPortal"
},
"Value":true
},
{
"Field":{
"Name": "Email Body"
},
"Value":"<!DOCTYPE html><html><title>HTML Tutorial</title><body><h1>This is a heading</h1><p>This is a paragraph.</p></body></html>"
},
{
"Field":{
"Name": "Email Subject"
},
"Value":"Test Email"
},
{
"Field":{
"Name": "Enable Automatic Escalation"
},
"Value":false
},
{
"Field":{
"Name": "Enable Reminders"
},
"Value":false
},
{
"Field":{
"Name": "Project"
},
"Value":{"ArtifactID":<project_artifact_id>}
},
{
"Field":{
"Name": "Use as Template"
},
"Value":false
}
]
}
}
If you are using the Preservation application you can utilize the following APIs for interacting with the application. For more information on the Preservation application, see Preservation on the RelativityOne Documentation site.
The following REST call creates a preservation object and initiate preservation holds for the specified entities and data sources/services.
Provide one of the following:
In the following example, an entity for Microsoft Mailbox and OneDrive along with an entity for Google Gmail, Chat, and Drive are being preserved. If entities are provided without the specified data service IDs, then it preserves those entities for all available custodial data services.
https://{Instance_URL}/Relativity.Rest/api/Preservations/v1/Preservations/workspace/{workspaceId}/preservation/PreserveEntities/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"preservationRequest": {
"LegalHoldProjectId": "<integer>",
"PreservationId": "<integer>",
"PreservationName": "<string>",
"SourceIds": [
"<o365SourceId>",
"<gVaultSourceId>"
],
"EntitiesToPreserve": {
"<entityID>": [
"<MailboxServiceID>", "<OneDriveServiceID>"
],
"<entityID>": [
"<GmailServiceID>", "<GChatServiceID>", "<GDriveServiceID>"
],
},
"NonCustodialDataIds": [
],
"StartPreservationJobs": "true"
}
}
The following REST call releases the specified custodians from specified data sources/services.
https://{Instance_URL}/Relativity.Rest/api/Preservations/v1/Preservations/workspace/{workspaceId}/preservation/{preservationId}/ReleaseCustodians/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"releaseRequest": {
"SourceIds": [
"<o365SourceId>",
"<gVaultSourceId>"
],
"EntitiesToRelease": {
"<entityID>": [
"<MailboxServiceID>", "<OneDriveServiceID>"
],
"<entityID>": [
"<GmailServiceID>", "<GChatServiceID>", "<GDriveServiceID>"
],
},
"NonCustodialDataIds": [
],
"StartPreservationJobs": "true"
}
}
The following REST call closes a preservation and all holds associated with it.
https://{Instance_URL}/Relativity.Rest/api/Preservations/v1/Preservations/workspace/{workspaceId}/preservation/{preservationId}/ClosePreservation
You can use the following APIs to build integration for importing custodians. For more information on ways to import Custodians, see Importing entities via Integration Points on the RelativityOne Documentation site.
The following REST call creates an entity with the following fields:
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/create
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
{
"Request":{
"ObjectType":{
"Name": "Entity"
},
"FieldValues":[
{
"Field":{
"Name": "Full Name"
},
"Value": "<last_name_,_first_name>"
},
{
"Field":{
"Name": "First Name"
},
"Value": "<first_name>"
},
{
"Field":{
"Name": "Last Name"
},
"Value": "<last_name>"
},
{
"Field":{
"Name": "Email"
},
"Value": "<email>"
}
]
}
}
The following REST call updates the employee status of an entity.
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"request":{
"Object":{
"artifactId": <entity_artifact_id>
},
"FieldValues":[
{
"Field":{
"Name": "Employee Status"
},
"Value": "<employee_status>"
}
]
}
}
You can use the following APIs for creating and updating Legal Hold Tasks. For information on creating and tracking tasks, see Task tracking on the RelativityOne Documentation site.
The following REST call creates a Legal Hold task with the following fields:
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/create
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
{
"Request":{
"ObjectType":{
"Name": "Legal Hold Task"
},
"FieldValues":[
{
"Field":{
"Name": "Name"
},
"Value": "<task_name>"
},
{
"Field":{
"Name": "Task Type"
},
"Value": {"ArtifactID": <task_type_choice_id>}
},
{
"Field":{
"Name": "Status"
},
"Value": {"ArtifactID": <status_choice_id>}
},
{
"Field":{
"Name": "Project"
},
"Value":{"ArtifactID": <project_artifact_id>}
}
]
}
}
The following REST call updates the status field of a Legal Hold task.
https://{Instance_URL}/Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{Workspace_ID}/object/update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"request":{
"Object":{
"artifactId": <task_artifact_id>
},
"FieldValues":[
{
"Field":{
"Name": "Status"
},
"Value":{
"ArtifactID": <status_choice_id>
}
}
]
}
}
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 |