Update Recovery Point Retention
Product version: 11.2
Last modified: 5 August 2026
Applies one retention policy to a list of existing recovery points in a single call. The supported policies are USE_JOB_RETENTION, KEEP_FOREVER, and PROTECT_UNTIL.
This method requires a user account with the permission to manage Backup Repositories, and it is available only when the HTTP API is enabled for the product instance. Whether the HTTP API can be enabled depends on the license edition. In a multi-tenant deployment, a request cannot change recovery points that belong to another tenant.
Endpoint
https://<Director_IP_address>:4443/c/router
Request Example
The retention period can be set in two ways. The following example sets a relative period, counted from the creation time of each recovery point, so each recovery point gets its own Protect Until date.
curl --request POST \
--url https://<Director_IP_address>:4443/c/router \
--header "content-type: application/json" \
--cookie @cookies.txt \
--data '{
"action": "BackupManagement",
"method": "updateSavepointsRetention",
"data": [{
"savepointIds": [73, 74, 75],
"protectedPolicy": "PROTECT_UNTIL",
"keepCount": 3,
"keepType": "MONTHS"
}],
"type": "rpc",
"tid": 1}'
The following example sets an absolute Protect Until date. The same date is applied to every recovery point in the request, regardless of when each recovery point was created.
curl --request POST \
--url https://<Director_IP_address>:4443/c/router \
--header "content-type: application/json" \
--cookie @cookies.txt \
--data '{
"action": "BackupManagement",
"method": "updateSavepointsRetention",
"data": [{
"savepointIds": [73, 74, 75],
"protectedPolicy": "PROTECT_UNTIL",
"expired": "2027-01-01T00:00:00Z"
}],
"type": "rpc",
"tid": 1}'
Request Fields
|
Field |
Type |
Value(s) |
|---|---|---|
|
|
string |
|
|
|
string |
|
|
|
array |
Retention settings to apply to the recovery points |
|
|
string |
|
|
|
int |
1 |
Data
|
Field |
Type |
Value(s) |
|---|---|---|
|
|
array of long |
Required. IDs of the recovery points to update. The array must not be empty and can contain up to 10,000 distinct IDs. |
|
|
string |
Required. Retention policy to apply: |
|
|
DateTime |
Absolute date until which the recovery points are protected, in the ISO-8601 format, for example |
|
|
int |
Length of the relative retention period, counted from the creation time of each recovery point. Use together with |
|
|
string |
Unit of the relative retention period: |
Response Sample
{
"action": "BackupManagement",
"method": "updateSavepointsRetention",
"tid": "1",
"type": "rpc",
"message": null,
"where": null,
"cause": null,
"data": {
"updatedIds": [73, 75],
"skippedIds": [],
"failures": [
{
"savepointId": 74,
"reason": "Update physical savepoint metadata failed: <RESULT>."
}
]
}
}
Response Fields
|
Field |
Value |
Description |
|---|---|---|
|
|
string |
Message if the request failed |
|
|
string |
Reference to the method where the problem occurred |
|
|
string |
Cause of failure |
|
|
array of long |
Recovery points updated successfully. This includes the recovery points that already had the requested retention. |
|
|
array of long |
Recovery points that were requested but not changed, for example a missing recovery point, one whose removal is pending, or one that was removed after its ID was collected. |
|
|
array of object |
Recovery points that could not be updated. Each entry has the following format: |
Processing Large Sets
Each call accepts up to 10,000 recovery point IDs.
The retention change is applied synchronously: the call does not return until every recovery point has been written. On a live Backup Repository, each recovery point takes about two seconds to write, so a call that covers thousands of recovery points runs for hours. The HTTP client can reach its own timeout and show no response while the Director continues and completes the change. This is expected for a request of that size and does not mean that the call failed. To confirm the result, read the recovery points again, as described in List all Recovery Points.
To stay within the timeout of the HTTP client, split the IDs into small batches of about 150 recovery points, call the method once per batch, and merge the results. The method is idempotent, so a batch can be retried safely.