Skip to main content

ConfigImportPreview

archive objectrequired
timestampstring<date-time>required

When the archive was taken.

hoststringrequired
hoservaVersionstringrequired
schemaVersionstringrequired

The database schema version of the archive.

liveSchemaVersionstringrequired
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).

  • Array [
  • codestringrequired

    Possible values: [incompatible_archive, archive_newer_version, archive_other_installation, archive_array_mismatch, restore_path_unsafe]

    messagestringrequired
  • ]
  • 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.

  • Array [
  • categorystringrequired

    Possible values: [shares, accounts, schedules, notifications, backup, system, custom_config, templates, stacks]

    added object[]required

    In the archive, not in the live configuration.

  • Array [
  • kindstringrequired

    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]

    namestringrequired

    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.

  • Array [
  • kindstringrequired

    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]

    namestringrequired

    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.

  • Array [
  • kindstringrequired

    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]

    namestringrequired

    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
    statusConfigImportSecretsStatusrequired

    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]

    identityConfigImportSecretsStatus

    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]

    stacksstring[]required

    The stacks of the archive whose .env files would not be restored; empty when status is opened.

    notes object[]required
  • Array [
  • codestringrequired

    Possible values: [sessions_replaced, array_state_kept, host_files_replaced]

    messagestringrequired
  • ]
  • 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.

    schemaUpgradebooleanrequired

    The archive's database is older than the running schema and is upgraded, on a staged copy, by the migration runner.

    disks object[]required
  • Array [
  • namestringrequired

    What a user calls it: the role and index, its mountpoint and the identity it was recorded with.

    roleArrayDiskRolerequired

    A role the array-setup wizard assigns. Ignore is omitted — those disks never appear in the plan.

    Possible values: [parity, data, cache]

    roleIndexinteger<int64>required

    Possible values: >= 1

    mountpointstringrequired
    fsUuidstringrequired

    The filesystem UUID the archive records for the slot.

    wwnstring
    serialstring
    byIdNamestring
    weakIdentitybooleanrequired
    sizeBytesinteger<int64>
    stateConfigImportDiskStaterequired

    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]

    devicestring

    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

  • Array [
  • roleArrayDiskRolerequired

    A role the array-setup wizard assigns. Ignore is omitted — those disks never appear in the plan.

    Possible values: [parity, data, cache]

    roleIndexinteger<int64>required

    Possible values: >= 1

    devicestringrequired

    The attached disk the slot was matched to.

    Possible values: non-empty and <= 256 characters

  • ]
  • ConfigImportPreview
    {
    "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"
    }
    ]
    }
    }
    }