Last date modified: 2025-Jun-17
Legal Hold APIs
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
Matter or project management
The following APIs can be used for any matter or project management function, including integrating with matter management systems.
ActiveCustodianSummary
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:
- Project ID
- Full Name
- First Name
- Last Name
- Employee Number (empty string if not populated)
- UniqueID (empty string if not populated)
- Error Message (only returns on a bad request)
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"
}
]
Creating a Legal Hold project
The following REST calls create a Legal Hold project with the following fields:
- Full Name
- Use as Template (defaulted to No)
- Project Status (must specify ArtifactID of the Active choice)
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
}
}
]
}
}
Querying a Legal Hold project
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
}
Querying for Custodians on a Legal Hold project
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
}
Creating a communication
The following REST call adds a communication to a Legal Hold project with the following fields:
- Name
- Acknowledgment Required
- Communication Type (specify ArtifactID of the Communication Type choice)
- DisplayInPortal
- Email Body
- Email Subject
- Enable Automatic Escalation - If set to true, you must also specify:
- Allotted Escalations
- Escalation Interval
- Escalation Recipient
- Escalation Subject
- Escalation Detail
- Enable Reminders - If set to true, you must also specify:
- Allotted Reminders
- Reminder Interval
- Reminder Subject
- Reminder Body
- Project (specify ArtifactID of the project to add the communication to)
- Use as Template (defaulted to No)
Optional BCC fields:
- BCC People
- BCC Subject
- BCC Body
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
}
]
}
}
Preservation in Place (PIP Application)
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.
Preserving data
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:
- LegalHoldProjectID - use if a previous preservation has not been run.
- PreservationID - ArtifactID of the preservation.
- PreservationName - name of the preservation (should be the same as the project name).
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"
}
}
Releasing data
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"
}
}
Closing preservation
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
HR Integrations
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.
Creating an entity
The following REST call creates an entity with the following fields:
- First Name
- Last Name
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>"
}
]
}
}
Updating entity employee status
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>"
}
]
}
}
Task Management
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.
Creating a Legal Hold task
The following REST call creates a Legal Hold task with the following fields:
- Name
- Type
- Status
- Project
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>}
}
]
}
}
Updating Legal Hold task status
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>
}
}
]
}
}