Backup/restore account data

Account data (cubes, reports / published reports, workspaces) may be downloaded as an XML file in this way:

  1. Open Manage Account view (top-right menu)
  2. Click the Backup Account Data button
  3. XML file is a human-readable and it can be stored under the version control like git; in this way you can easily track changes with a diffs between commits and review changes.

This XML file can be restored on self-hosted SeekTable instance with an active "System/users admin" subscription:

  1. Login as a user with an installation "admin" rights
  2. Go to Admin (top-menu) → User accounts
  3. Choose an user account (where you want to restore the backup) and open account's form with a click the Edit button
  4. Click Restore Account Data:
    Account: restore from XML backup
  5. Choose a file to upload and a restore mode:
    • Keep record IDs, do not restore if IDs already exist: use this option to restore only removed cubes/reports.
    • Keep record IDs, overwrite existing records with same IDs: use this option to transfer/update account data between SeekTable instances.
    • Generate new record IDs: use this option to 'clone' cubes with reports.

With a backup/restore functionality it's easy to organize a typical "dev → staging → prod" development flow:

Reports deployment process can be fully automated with API calls described below.

Account data backup API

For automated backups use this API endpoint:

GET {SeekTable_BaseUrl}/api/account/{account_id}/backup
Header: Authorization (required) API key of the user with "admin" role + a login email of this user should be specified in SeekTable_ST__Api__AccountBackupAllowedForEmail app setting. It is strongly recommended to create a dedicated "admin" user (without cubes/reports) and use its API key ONLY for backup/restore API calls.
account_id (required) ID of the account to backup.
format (optional) Determines backup format: xml (a single XML data file, default) or zip (an archive with multiple configuration xml/json files).
Use XML format for snapshots. A multi-file backup (zip archive) is better for Git storage and AI-assisted setup.
workspaces (optional) Determines whether to include workspaces in the backup; if not, should be 0 or false (true by default).
dashboards (optional) Determines whether to include dashboards in the backup; if not, should be 0 or false (true by default). This option makes sense only if installation has an active subscription for dashboards.
team (optional) Determines whether to include "Team sharing" settings (team members/groups/access rules); if not, should be 0 or false (true by default). This option makes sense only if the user has a "Team sharing" capability.
Response HTTP/200 (OK) + backup data in the response body.
curl -k -H "Authorization: SEEKTABLE_ADMIN_ACCOUNT_API_KEY" SEEKTABLE_BASE_URL/api/account/ACCOUNT_ID/backup -o "seektable_backup.xml"

Account data restore API

For automated restore use this API endpoint:

POST {SeekTable_BaseUrl}/api/account/{account_id}/restore?mode={mode}&workspaces=1&dashboards=1&team=1
Header: Authorization (required) API key of the user with "admin" role + a login email of this user should be specified in SeekTable_ST__Api__AccountRestoreAllowedForEmail app setting. It is strongly recommended to create a dedicated "admin" user (without cubes/reports) and use its API key ONLY for backup/restore API calls.
account_id (required) ID of the account where cubes/reports are restored.
Request Body (required) Backup data to restore: either a single XML or zipped multi-file configs (in this case Content-Type: application/zip HTTP header should be specified). A ZIP archive may contain a partial backup, such as specific cubes or reports.
mode (optional) restore mode:
(empty)
corresponds to "Keep record IDs, do not restore if IDs already exist" mode in UI
allowUpdate
corresponds to "Keep record IDs, overwrite existing records with same IDs"
newIds
corresponds to "Generate new record IDs" mode in UI
workspaces (optional) Determines whether to restore workspaces (if they are present in the backup); if yes, should be 1 or true (false by default).
dashboards (optional) Determines whether to restore dashboards (if they are present in the backup). If yes, should be 1 or true (false by default). This option makes sense only if installation has an active subscription for dashboards.
team (optional) Determines whether to restore "Team sharing" settings: team members/groups/access rules (if they are present in the backup). If yes, should be 1 or true (false by default). This option makes sense only if the user has a "Team sharing" capability.
Response HTTP/200 (OK) if restore operation executed successfully.
curl -k -H "Content-Type: text/xml" -H "Authorization: SEEKTABLE_ADMIN_ACCOUNT_API_KEY" --data-binary "@seektable_backup_YYYYMMDD.xml" SEEKTABLE_BASE_URL/api/account/ACCOUNT_ID/restore?mode=allowUpdate&workspaces=1&dashboards=1&team=1

Full backup of SeekTable instance

To backup self-hosted SeekTable installation it is enough to make a copy of files in the docker volumes db-volume and csv-files-volume + docker-compose configuration files.