ConfigImportPreview
archive objectrequired
When the archive was taken.
The database schema version of the archive.
blockers object[]required
Refusals importConfig would return for this archive; empty when it would go ahead (a running job, which is not a property of the archive, refuses it too).
Possible values: [incompatible_archive, archive_newer_version, archive_other_installation, archive_array_mismatch, restore_path_unsafe]
groups object[]required
One entry per category, in a fixed order, each listing what an import would add, change or remove. History and runtime tables (jobs, the audit log, spin events, notification deliveries and alerts, usage, mover and cache results) are not listed. Empty when the schema versions differ.
Possible values: [shares, accounts, schedules, notifications, backup, system, custom_config, templates, stacks]
added object[]required
In the archive, not in the live configuration.
Possible values: [share, share_user_permission, share_group_permission, user, user_group, user_group_member, api_token, schedule_chain, schedule_job, notification_channel, notification_route, notification_severity, notification_quiet_hours, backup_destination, appdata_backup_container, backup_recipient, acme, ups, array_settings, host_config, external_disk, hostname, timezone, backup_passphrase, update_channel, update_check, custom_config_file, template_file, stack_file]
What a user calls it: a share name, a username, a schedule job, a destination name; share / user for a permission, group / user for a membership, user / token name for an API token, event / channel for a route, the label of an external disk, the kind of a host configuration decision, the path of a custom config file or template relative to its directory, stack/file for a stack's compose or meta.json file. Empty for the settings that exist once. A secret or a passphrase is reported as changed, never by its value.
changed object[]required
In both, with different content.
Possible values: [share, share_user_permission, share_group_permission, user, user_group, user_group_member, api_token, schedule_chain, schedule_job, notification_channel, notification_route, notification_severity, notification_quiet_hours, backup_destination, appdata_backup_container, backup_recipient, acme, ups, array_settings, host_config, external_disk, hostname, timezone, backup_passphrase, update_channel, update_check, custom_config_file, template_file, stack_file]
What a user calls it: a share name, a username, a schedule job, a destination name; share / user for a permission, group / user for a membership, user / token name for an API token, event / channel for a route, the label of an external disk, the kind of a host configuration decision, the path of a custom config file or template relative to its directory, stack/file for a stack's compose or meta.json file. Empty for the settings that exist once. A secret or a passphrase is reported as changed, never by its value.
removed object[]required
In the live configuration, not in the archive.
Possible values: [share, share_user_permission, share_group_permission, user, user_group, user_group_member, api_token, schedule_chain, schedule_job, notification_channel, notification_route, notification_severity, notification_quiet_hours, backup_destination, appdata_backup_container, backup_recipient, acme, ups, array_settings, host_config, external_disk, hostname, timezone, backup_passphrase, update_channel, update_check, custom_config_file, template_file, stack_file]
What a user calls it: a share name, a username, a schedule job, a destination name; share / user for a permission, group / user for a membership, user / token name for an API token, event / channel for a route, the label of an external disk, the kind of a host configuration decision, the path of a custom config file or template relative to its directory, stack/file for a stack's compose or meta.json file. Empty for the settings that exist once. A secret or a passphrase is reported as changed, never by its value.
secrets objectrequired
The status of the archive's secrets.age, which holds its database secrets and stack .env files.
Possible values: [none, opened, no_passphrase, passphrase_incorrect]
The same status for the archive's identity.age, the backup recipient's private identity: opened means a bare-metal restore adopts the archive's recipient; otherwise this box keeps its own. Always present in a response; an in-place import never replaces the recipient, so it only reports.
Possible values: [none, opened, no_passphrase, passphrase_incorrect]
The stacks of the archive whose .env files would not be restored; empty when status is opened.
notes object[]required
Possible values: [sessions_replaced, array_state_kept, host_files_replaced]
bareMetal object
The bare-metal restore of an archive onto a fresh install, present when the installation has no array configured and the archive's schema is not newer.
The archive's database is older than the running schema and is upgraded, on a staged copy, by the migration runner.
disks object[]required
What a user calls it: the role and index, its mountpoint and the identity it was recorded with.
A role the array-setup wizard assigns. Ignore is omitted — those disks never appear in the plan.
Possible values: [parity, data, cache]
Possible values: >= 1
The filesystem UUID the archive records for the slot.
matched: exactly one attached disk carries the recorded identity (WWN, else serial; a weak-identity disk by filesystem UUID and size) and its filesystem is the recorded one. absent: no attached disk is it. replaced: the identity or the filesystem differs, either an attached disk holds the recorded filesystem with another identity or the disk with the recorded identity holds another filesystem. ambiguous: more than one attached disk matches, a disk and its clone. A disk that is not matched stays a row of the restored array with its recorded filesystem, is never mounted or adopted by the restore, and leaves the array degraded.
Possible values: [matched, absent, replaced, ambiguous]
The attached disk it matched, or the disk holding its filesystem when replaced; absent for absent and ambiguous.
diskMapping objectrequired
The mapping of the archive's array disks to the attached disks that a user confirms: one entry per matched disk, and none for any other. An empty list confirms an archive that records no array disks, or that none of its disks is attached.
disks object[]required
Possible values: <= 512
A role the array-setup wizard assigns. Ignore is omitted — those disks never appear in the plan.
Possible values: [parity, data, cache]
Possible values: >= 1
The attached disk the slot was matched to.
Possible values: non-empty and <= 256 characters
{
"archive": {
"timestamp": "2024-07-29T15:51:28.071Z",
"host": "string",
"hoservaVersion": "string",
"schemaVersion": "string"
},
"liveSchemaVersion": "string",
"blockers": [
{
"code": "incompatible_archive",
"message": "string"
}
],
"groups": [
{
"category": "shares",
"added": [
{
"kind": "share",
"name": "string"
}
],
"changed": [
{
"kind": "share",
"name": "string"
}
],
"removed": [
{
"kind": "share",
"name": "string"
}
]
}
],
"secrets": {
"status": "none",
"identity": "none",
"stacks": [
"string"
]
},
"notes": [
{
"code": "sessions_replaced",
"message": "string"
}
],
"bareMetal": {
"schemaUpgrade": true,
"disks": [
{
"name": "string",
"role": "parity",
"roleIndex": 0,
"mountpoint": "string",
"fsUuid": "string",
"wwn": "string",
"serial": "string",
"byIdName": "string",
"weakIdentity": true,
"sizeBytes": 0,
"state": "matched",
"device": "string"
}
],
"diskMapping": {
"disks": [
{
"role": "parity",
"roleIndex": 0,
"device": "string"
}
]
}
}
}