Restoring a backup

Choose the backup ID from the list operation and inspect its details before restoring. The operator must check that the backup contains the intended datasets and represents the state to recover. If no ID is provided, Graph selects the highest numbered backup; an explicit ID makes the selection unambiguous.

Example Call

In this instance we will restore the full backup (3) created here. Notice how the ID is appended to the /restore/ endpoint.

curl -s -XPOST -H "Authorization: $TC_OIDC_TOKEN" https://telicent.core.domain/api/sparql/backups/restore/3

If we wish to recover the latest backup we can omit the backup ID.

curl -s -XPOST -H "Authorization: $TC_OIDC_TOKEN" https://telicent.core.domain/api/sparql/backups/restore/

Response

Before restoring, Graph creates a rollback backup of the current data. backup-success contains per-dataset backup component results when available (or a false value when the rollback backup cannot be made), and rollback-point-backup-id identifies it when created. success reports the restore outcome. Inspect the per-dataset results as well. These fields are at the top level of the response.

The example below shows selected response fields and restores backup 3; the rollback backup receives ID 5. Paths and file names depend on the deployment.

Click here to see the response from the full restore ```json { "date": "2025-06-27_12-19-45", "user": "jeff.tester@demo.com", "backup-success": { "catalog": { "tdb-success": true, "labels-success": true }, "ontology": { "tdb-success": true, "labels-success": true }, "knowledge": { "tdb-success": true, "labels-success": true } }, "backup-type": "3", "restorePath": "/fuseki/backups/3", "catalog": { "dataset-name": "catalog", "tdb": { "folder": "/fuseki/backups/3/catalog/tdb/", "restorePath": "/fuseki/backups/3/catalog/tdb//catalog_backup.nq.gz", "success": true, "files": { "files": [ "catalog_backup.nq.gz" ] } }, "kafka": { "folder": "/fuseki/backups/3/catalog/kafka/", "/catalog": [ { "name": "catalog", "offset": 1402, "success": true } ], "files": { "files": [ "catalog.json" ] } }, "labels": { "folder": "/fuseki/backups/3/catalog/labels/", "success": true, "files": { "meta": { "files": [ "1" ] }, "files": [ "000008.log" ], "private": { "1": { "files": [ "CURRENT", "MANIFEST-000009", "OPTIONS-000011", "000008.log" ] } }, "shared_checksum": {} } } }, "ontology": { "dataset-name": "ontology", "tdb": { "folder": "/fuseki/backups/3/ontology/tdb/", "restorePath": "/fuseki/backups/3/ontology/tdb//ontology_backup.nq.gz", "success": true, "files": { "files": [ "ontology_backup.nq.gz" ] } }, "kafka": { "folder": "/fuseki/backups/3/ontology/kafka/", "/ontology": [ { "name": "ontology", "offset": 50964, "success": true } ], "files": { "files": [ "ontology.json" ] } }, "labels": { "folder": "/fuseki/backups/3/ontology/labels/", "success": true, "files": { "meta": { "files": [ "1" ] }, "files": [ "000009.log" ], "private": { "1": { "files": [ "OPTIONS-000012", "MANIFEST-000010", "000009.log", "CURRENT" ] } }, "shared_checksum": { "files": [ "000008_sE2GWJWZWS8JYXZHENHN6_2992049.sst" ] } } } }, "knowledge": { "dataset-name": "knowledge", "tdb": { "folder": "/fuseki/backups/3/knowledge/tdb/", "restorePath": "/fuseki/backups/3/knowledge/tdb//knowledge_backup.nq.gz", "success": true, "files": { "files": [ "knowledge_backup.nq.gz" ] } }, "kafka": { "folder": "/fuseki/backups/3/knowledge/kafka/", "/knowledge": [ { "name": "knowledge", "offset": 311757, "success": true } ], "files": { "files": [ "knowledge.json" ] } }, "labels": { "folder": "/fuseki/backups/3/knowledge/labels/", "success": true, "files": { "meta": { "files": [ "1" ] }, "files": [ "000072.log" ], "private": { "1": { "files": [ "MANIFEST-000073", "CURRENT", "OPTIONS-000075", "000072.log" ] } }, "shared_checksum": { "files": [ "000077_sE2GWJWZWS8JYXZHENHN7_68785994.sst", "000076_sE2GWJWZWS8JYXZHENHN7_68808191.sst", "000080_sE2GWJWZWS8JYXZHENHN7_11082531.sst", "000078_sE2GWJWZWS8JYXZHENHN7_68473975.sst", "000079_sE2GWJWZWS8JYXZHENHN7_69444784.sst" ] } } } }, "rollback-point-backup-id": "5", "success": true } ```

Error Response

For a missing or unusable backup ID, success is false. In this example, Graph cannot use /fuseki/backups/56 as a restore directory. This can mean the backup does not exist or does not contain usable datasets. The API message is shown unchanged below. A response can have HTTP 200 while its operation result indicates failure, so check the JSON fields.

{
  "date": "2025-06-27_12-16-21",
  "user": "jeff.tester@demo.com",
  "backup-success": false,
  "backup-type": "56",
  "restorePath": "/fuseki/backups/56",
  "reason": "Restore path unsuitable: /fuseki/backups/56",
  "success": false
}

For background execution and polling, see asynchronous jobs.


[EARLY DRAFT RELEASE] Copyright 2020-2026 Telicent Limited. All rights reserved