technitium 0.4.0

Typed async Rust client for the Technitium DNS Server API
Documentation
# Settings: Restore Settings

## Endpoint
`/api/settings/restore`

**Obsolete Path:** `/api/restoreSettings`

## Method
POST (multipart form data)

## Description
Restores selected items from a backup zip file. The request must be a multipart form POST with the backup zip file in binary format.

## Authentication
Required. Token must have **Settings: Delete** permission.

## Parameters

| Name | Type | Required | Conditional | Description |
|------|------|----------|-------------|-------------|
| `token` | string | Yes | No | Session token from `login` or `createToken`. |
| `node` | string | No | No | Node domain name for cluster targeting. Only usable when Clustering is initialized. Defaults to current node. |
| `authConfig` | bool | No | No | Restore authentication config file. Default: `false`. |
| `clusterConfig` | bool | No | No | Restore Cluster config file. Default: `false`. |
| `webServiceSettings` | bool | No | No | Restore web service config file. Default: `false`. |
| `dnsSettings` | bool | No | No | Restore DNS settings and certificate files. Default: `false`. |
| `logSettings` | bool | No | No | Restore log settings file. Default: `false`. |
| `zones` | bool | No | No | Restore DNS zone files. Default: `false`. |
| `allowedZones` | bool | No | No | Restore allowed zones file. Default: `false`. |
| `blockedZones` | bool | No | No | Restore blocked zones file. Default: `false`. |
| `blockLists` | bool | No | No | Restore block lists cache files. Default: `false`. |
| `apps` | bool | No | No | Restore DNS apps. Default: `false`. |
| `scopes` | bool | No | No | Restore DHCP scope files. Default: `false`. |
| `stats` | bool | No | No | Restore dashboard stats files. Default: `false`. |
| `logs` | bool | No | No | Restore log files. Default: `false`. |
| `deleteExistingFiles` | bool | No | No | Delete existing files for selected items before restoring. Default: `false`. |

**Request Body**: Multipart form data containing the backup zip file in binary format.

## Response Fields

Returns the newly updated settings in the same format as the Get DNS Settings response. See `settings_get.md` for the full response schema.

## Conditional Logic Notes

- The `deleteExistingFiles` parameter controls whether existing files for the selected items are deleted before restoring. When `false`, restored files may merge with or overwrite existing ones.
- Despite being a "restore" operation, this requires **Settings: Delete** permission.
- The parameters control which items from the zip are actually restored. Items in the zip but not selected are ignored.

## Edge Cases

- This is the only Settings endpoint that requires a POST with multipart form data (binary zip upload).
- The `node` parameter allows restoring to remote cluster nodes.
- Restoring `authConfig` could lock out the current user if the backup contains different credentials.
- Restoring `clusterConfig` on a clustered setup could disrupt cluster operations.
- If the zip file doesn't contain data for a selected item, that item is silently skipped.