{
  "components": {
    "schemas": {
      "AccessPoint": {
        "description": "Access Point",
        "properties": {
          "device": {
            "type": "string"
          },
          "flags": {
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "hwAddress": {
            "type": "string"
          },
          "rsnFlags": {
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "ssid": {
            "type": "string"
          },
          "strength": {
            "format": "uint8",
            "maximum": 255,
            "minimum": 0,
            "type": "integer"
          },
          "wpaFlags": {
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "device",
          "ssid",
          "hwAddress",
          "strength",
          "flags",
          "rsnFlags",
          "wpaFlags"
        ],
        "type": "object"
      },
      "AccessValue": {
        "description": "Allows to specify explicit enablement of remote access for supported services",
        "oneOf": [
          {
            "const": "enabled",
            "description": "Explicitly enabled",
            "type": "string"
          },
          {
            "const": "default",
            "description": "Default system configuration behavior that is product specific",
            "type": "string"
          }
        ]
      },
      "Action": {
        "oneOf": [
          {
            "enum": [
              "activateStorage",
              "install"
            ],
            "type": "string"
          },
          {
            "additionalProperties": false,
            "description": "Performs an iSCSI discovery, finding nodes from the given portal.",
            "properties": {
              "discoverISCSI": {
                "$ref": "#/components/schemas/DiscoverConfig"
              }
            },
            "required": [
              "discoverISCSI"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "description": "Probes hardware and refreshes services (storage, DASD, software, etc).\n\nIf `only` is not given, it probes everything.",
            "properties": {
              "probe": {
                "properties": {
                  "only": {
                    "items": {
                      "$ref": "#/components/schemas/Scope"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "probe"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "configureL10n": {
                "$ref": "#/components/schemas/l10n.SystemConfig"
              }
            },
            "required": [
              "configureL10n"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "finish": {
                "$ref": "#/components/schemas/FinishMethod"
              }
            },
            "required": [
              "finish"
            ],
            "type": "object"
          }
        ]
      },
      "AddonConfig": {
        "description": "Addon settings for registration",
        "properties": {
          "id": {
            "description": "ID of the addon.",
            "examples": [
              "sle-ha"
            ],
            "type": "string"
          },
          "registrationCode": {
            "description": "Registration code for the addon. Free extensions do not require a registration code.",
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "description": "Optional version of the addon. It is mandatory if there are multiple available versions.\nIf not specified, the version is found from the available addons.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id"
        ],
        "title": "List of add-ons to activate",
        "type": "object"
      },
      "AddonInfo": {
        "description": "Addon registration",
        "properties": {
          "available": {
            "description": "Whether the addon is mirrored on the RMT server, on SCC it is always `true`",
            "type": "boolean"
          },
          "description": {
            "description": "Short description of the addon (translated)",
            "type": "string"
          },
          "free": {
            "description": "Whether a registration code is required for registering the addon",
            "type": "boolean"
          },
          "id": {
            "description": "Addon identifier",
            "type": "string"
          },
          "label": {
            "description": "User visible name",
            "type": "string"
          },
          "recommended": {
            "description": "Whether the addon is recommended for the users",
            "type": "boolean"
          },
          "registration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddonRegistration"
              }
            ],
            "description": "Whether the addon is registered"
          },
          "release": {
            "description": "Release status of the addon, e.g. \"beta\"",
            "type": "string"
          },
          "version": {
            "description": "Version of the addon",
            "type": "string"
          }
        },
        "required": [
          "id",
          "version",
          "label",
          "available",
          "free",
          "recommended",
          "description",
          "release",
          "registration"
        ],
        "type": "object"
      },
      "AddonRegistration": {
        "oneOf": [
          {
            "properties": {
              "code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "const": "registered",
                "type": "string"
              }
            },
            "required": [
              "status"
            ],
            "type": "object"
          },
          {
            "properties": {
              "status": {
                "const": "notRegistered",
                "type": "string"
              }
            },
            "required": [
              "status"
            ],
            "type": "object"
          }
        ]
      },
      "AnswerRule": {
        "description": "Defines the answer to use for any question which matches the rule.\n\nIf the rule matches with the question ([class](Self::class),\n[text](Self::text) or [data](Self::data), it applies the specified `answer`).",
        "properties": {
          "action": {
            "description": "Action to use for answering the question.",
            "type": "string"
          },
          "class": {
            "description": "Question class (see [QuestionSpec::class]).",
            "examples": [
              "multipathActivation"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A question can include custom data. If any of the entries matches,\nthe rule is applied (see [QuestionSpec::data]).",
            "type": [
              "object",
              "null"
            ]
          },
          "text": {
            "description": "Question text (see [QuestionSpec::text]).",
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "description": "Value to use for the question (e.g. password or string input, depending on the question type).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "action"
        ],
        "title": "Automatic answer to questions",
        "type": "object"
      },
      "AuthResponse": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "token": {
            "description": "Bearer token to use on subsequent calls",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "AuthResponse",
        "type": "object"
      },
      "BondSettings": {
        "properties": {
          "mode": {
            "type": "string"
          },
          "options": {
            "type": [
              "string",
              "null"
            ]
          },
          "ports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "mode"
        ],
        "type": "object"
      },
      "BootloaderSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the bootloader system",
        "properties": {
          "availableBootloaders": {
            "description": "Possible bootloaders to select in the current system.",
            "items": {
              "$ref": "#/components/schemas/BootloaderSystemInfoBootloader"
            },
            "type": "array"
          }
        },
        "required": [
          "availableBootloaders"
        ],
        "title": "System",
        "type": "object"
      },
      "BootloaderSystemInfoBootloader": {
        "additionalProperties": false,
        "properties": {
          "encryptionAuth": {
            "description": "Encryption authentication methods that can be managed by the bootloader in this system.",
            "items": {
              "$ref": "#/components/schemas/BootloaderSystemInfoEncryptionAuthMethod"
            },
            "type": "array"
          },
          "type": {
            "$ref": "#/components/schemas/BootloaderSystemInfoBootloaderType"
          }
        },
        "required": [
          "type",
          "encryptionAuth"
        ],
        "type": "object"
      },
      "BootloaderSystemInfoBootloaderType": {
        "enum": [
          "grub2",
          "grub2-bls",
          "systemd-boot"
        ]
      },
      "BootloaderSystemInfoEncryptionAuthMethod": {
        "enum": [
          "password",
          "tpm"
        ]
      },
      "BridgeSettings": {
        "properties": {
          "forwardDelay": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "helloTime": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "maxAge": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "ports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "priority": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "stp": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "Config": {
        "additionalProperties": false,
        "description": "Profile definition for automated installation.",
        "properties": {
          "$schema": {
            "description": "The schema location is ignored by the installer, it always uses the built-in schema, but it can be useful for automatic validation and code completion in some editors.",
            "title": "URL of the JSON validation schema",
            "type": "string"
          },
          "access": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/access.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Remote access configuration (SSH, Web Console)."
          },
          "bootloader": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/bootloader.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bootloader configuration."
          },
          "dasd": {
            "$ref": "#/components/schemas/DasdConfig"
          },
          "files": {
            "description": "User-defined files to deploy after installation just before post install scripts.",
            "items": {
              "$ref": "#/components/schemas/UserFile"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "hostname": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/hostname.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hostname configuration."
          },
          "iscsi": {
            "$ref": "#/components/schemas/IscsiConfig"
          },
          "l10n": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/l10n.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Localization configuration (keyboard, language, timezone)."
          },
          "legacyAutoyastStorage": {
            "description": "Accepts all options of the AutoYaST partitioning section (i.e., XML to JSON)."
          },
          "localization": {
            "$ref": "#/components/schemas/l10n.Config",
            "deprecated": true,
            "description": "Deprecated: use l10n instead.",
            "title": "Localization settings (old schema)"
          },
          "network": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/network.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Network configuration (interfaces, connections, state)."
          },
          "ntp": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ntp.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "NTP time synchronization configuration."
          },
          "product": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Product related configuration"
          },
          "proxy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/proxy.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Network proxy configuration."
          },
          "questions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/questions.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Automated question answering rules and policy."
          },
          "root": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RootUserConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "scripts": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScriptsConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "User-defined scripts to run at different points of the installation."
          },
          "security": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/security.Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Security configuration (e.g. SSL certificate fingerprints)."
          },
          "software": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SoftwareConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Software related configuration"
          },
          "storage": {
            "$ref": "#/components/schemas/StorageConfig"
          },
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FirstUserConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "zfcp": {
            "$ref": "#/components/schemas/ZfcpConfig"
          }
        },
        "title": "Profile",
        "type": "object"
      },
      "ConnectionState": {
        "oneOf": [
          {
            "const": "unknown",
            "description": "The connection state is unknown.",
            "type": "string"
          },
          {
            "const": "activating",
            "description": "The connection is getting activated.",
            "type": "string"
          },
          {
            "const": "activated",
            "description": "The connection is activated.",
            "type": "string"
          },
          {
            "const": "deactivating",
            "description": "The connection is getting deactivated.",
            "type": "string"
          },
          {
            "const": "deactivated",
            "description": "The connection is deactivated.",
            "type": "string"
          }
        ]
      },
      "ConnectivityState": {
        "description": "Network connectivity state.",
        "oneOf": [
          {
            "const": "unknown",
            "description": "The connectivity state is unknown.",
            "type": "string"
          },
          {
            "const": "none",
            "description": "No connectivity.",
            "type": "string"
          },
          {
            "const": "portal",
            "description": "The network is behind a captive portal and cannot reach the full internet.",
            "type": "string"
          },
          {
            "const": "limited",
            "description": "The network is connected but it has no access to the full internet.",
            "type": "string"
          },
          {
            "const": "full",
            "description": "The network is connected and it has access to the full internet.",
            "type": "string"
          }
        ]
      },
      "DasdConfig": {
        "additionalProperties": false,
        "description": "DASD config.",
        "properties": {
          "devices": {
            "description": "List of DASD devices.",
            "items": {
              "$ref": "#/components/schemas/DasdConfigDevice"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "DasdConfigDevice": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "DASD device channel.",
            "type": "string"
          },
          "diag": {
            "description": "If device have set diag flag. If not specified then it keep what device has before.",
            "type": "boolean"
          },
          "format": {
            "description": "If device should be formatted. If not specified then it format device only if not already formatted.",
            "type": "boolean"
          },
          "state": {
            "default": "active",
            "description": "Specify target state of device. Either activate it or deactivate it.",
            "enum": [
              "active",
              "offline"
            ]
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "DasdSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the DASD system",
        "properties": {
          "devices": {
            "description": "DASD devices",
            "items": {
              "$ref": "#/components/schemas/DasdSystemInfoDevice"
            },
            "type": "array"
          }
        },
        "required": [
          "devices"
        ],
        "title": "System",
        "type": "object"
      },
      "DasdSystemInfoDevice": {
        "additionalProperties": false,
        "properties": {
          "accessType": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "channel": {
            "type": "string"
          },
          "deviceName": {
            "type": "string"
          },
          "diag": {
            "type": "boolean"
          },
          "formatted": {
            "type": "boolean"
          },
          "partitionInfo": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "channel",
          "deviceName",
          "type",
          "diag",
          "accessType",
          "partitionInfo",
          "status",
          "active",
          "formatted"
        ],
        "type": "object"
      },
      "DesktopSelection": {
        "description": "Desktop selection mode for a product",
        "enum": [
          "optional",
          "suggested"
        ],
        "type": "string"
      },
      "Device": {
        "description": "Network device",
        "properties": {
          "busPath": {
            "description": "Physical location of the device, e.g. \"pci-0000:c5:00.3\".",
            "type": [
              "string",
              "null"
            ]
          },
          "carrier": {
            "description": "Whether the device currently has a link (carrier).",
            "type": [
              "boolean",
              "null"
            ]
          },
          "connection": {
            "type": [
              "string",
              "null"
            ]
          },
          "driver": {
            "description": "Kernel driver in use, e.g. \"e1000e\".",
            "type": [
              "string",
              "null"
            ]
          },
          "ipConfig": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IpConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "macAddress": {
            "type": "string"
          },
          "mtu": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "speed": {
            "description": "Link speed in Mb/s, when the device reports one.\n\nOnly wired devices report a speed, and only while the link is up.",
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "state": {
            "$ref": "#/components/schemas/DeviceState"
          },
          "type": {
            "$ref": "#/components/schemas/DeviceType"
          }
        },
        "required": [
          "name",
          "type",
          "macAddress",
          "state"
        ],
        "type": "object"
      },
      "DeviceState": {
        "description": "Network device state.",
        "oneOf": [
          {
            "const": "unknown",
            "description": "The device's state is unknown.",
            "type": "string"
          },
          {
            "const": "unmanaged",
            "description": "The device is recognized but not managed by Agama.",
            "type": "string"
          },
          {
            "const": "unavailable",
            "description": "The device is detected but it cannot be used (wireless switched off, missing firmware, etc.).",
            "type": "string"
          },
          {
            "const": "connecting",
            "description": "The device is connecting to the network.",
            "type": "string"
          },
          {
            "const": "connected",
            "description": "The device is successfully connected to the network.",
            "type": "string"
          },
          {
            "const": "disconnecting",
            "description": "The device is disconnecting from the network.",
            "type": "string"
          },
          {
            "const": "disconnected",
            "description": "The device is disconnected from the network.",
            "type": "string"
          },
          {
            "const": "failed",
            "description": "The device failed to connect to a network.",
            "type": "string"
          }
        ]
      },
      "DeviceType": {
        "enum": [
          "loopback",
          "ethernet",
          "wireless",
          "dummy",
          "bond",
          "vlan",
          "bridge"
        ],
        "type": "string"
      },
      "Dhcp4Settings": {
        "properties": {
          "client_id": {
            "$ref": "#/components/schemas/DhcpClientId"
          },
          "hostname": {
            "type": [
              "string",
              "null"
            ]
          },
          "iaid": {
            "$ref": "#/components/schemas/DhcpIaid"
          },
          "send_hostname": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "send_release": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "client_id",
          "iaid"
        ],
        "type": "object"
      },
      "Dhcp6Settings": {
        "properties": {
          "duid": {
            "$ref": "#/components/schemas/DhcpDuid"
          },
          "hostname": {
            "type": [
              "string",
              "null"
            ]
          },
          "iaid": {
            "$ref": "#/components/schemas/DhcpIaid"
          },
          "send_hostname": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "send_release": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "duid",
          "iaid"
        ],
        "type": "object"
      },
      "DhcpClientId": {
        "oneOf": [
          {
            "enum": [
              "Mac",
              "PermMac",
              "Ipv6Duid",
              "Duid",
              "Stable",
              "None",
              "Unset"
            ],
            "type": "string"
          },
          {
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "string"
              }
            },
            "required": [
              "Id"
            ],
            "type": "object"
          }
        ]
      },
      "DhcpDuid": {
        "oneOf": [
          {
            "enum": [
              "Lease",
              "Llt",
              "Ll",
              "StableLlt",
              "StableLl",
              "StableUuid",
              "Unset"
            ],
            "type": "string"
          },
          {
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "string"
              }
            },
            "required": [
              "Id"
            ],
            "type": "object"
          }
        ]
      },
      "DhcpIaid": {
        "oneOf": [
          {
            "enum": [
              "Mac",
              "PermMac",
              "Ifname",
              "Stable",
              "Unset"
            ],
            "type": "string"
          },
          {
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "string"
              }
            },
            "required": [
              "Id"
            ],
            "type": "object"
          }
        ]
      },
      "DiscoverConfig": {
        "properties": {
          "address": {
            "type": "string"
          },
          "initiatorPassword": {
            "type": [
              "string",
              "null"
            ]
          },
          "initiatorUsername": {
            "type": [
              "string",
              "null"
            ]
          },
          "password": {
            "type": [
              "string",
              "null"
            ]
          },
          "port": {
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "username": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "address",
          "port"
        ],
        "type": "object"
      },
      "FinishMethod": {
        "description": "Finish method",
        "oneOf": [
          {
            "const": "halt",
            "description": "Halt the system",
            "type": "string"
          },
          {
            "const": "reboot",
            "description": "Reboots the system",
            "type": "string"
          },
          {
            "const": "stop",
            "description": "Do nothing at the end of the installation",
            "type": "string"
          },
          {
            "const": "poweroff",
            "description": "Poweroff the system",
            "type": "string"
          }
        ]
      },
      "FirstUserConfig": {
        "description": "First user settings\n\nHolds the settings for the first user.",
        "properties": {
          "fullName": {
            "description": "First user's full name",
            "examples": [
              "Jane Doe"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "hashedPassword": {
            "default": false,
            "description": "Whether the password is hashed or is plain text",
            "type": "boolean"
          },
          "password": {
            "description": "User password",
            "examples": [
              "nots3cr3t"
            ],
            "type": "string"
          },
          "sshPublicKey": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ],
            "deprecated": true
          },
          "sshPublicKeys": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ]
          },
          "userName": {
            "description": "First user's username",
            "examples": [
              "jane.doe"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "First user settings",
        "type": "object"
      },
      "HardwareInfo": {
        "description": "Represents the hardware information of the underlying system.",
        "properties": {
          "cpu": {
            "description": "CPU description.",
            "type": [
              "string",
              "null"
            ]
          },
          "memory": {
            "description": "Memory size (in bytes).",
            "format": "uint64",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "model": {
            "description": "Computer model.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "IEEE8021XSettings": {
        "description": "IEEE 802.1x (EAP) settings",
        "properties": {
          "anonymousIdentity": {
            "description": "Anonymous identity string for EAP authentication methods",
            "type": [
              "string",
              "null"
            ]
          },
          "caCert": {
            "description": "Path to CA certificate",
            "type": [
              "string",
              "null"
            ]
          },
          "caCertPassword": {
            "description": "Password string for CA certificate if it is encrypted",
            "type": [
              "string",
              "null"
            ]
          },
          "clientCert": {
            "description": "Path to client certificate",
            "type": [
              "string",
              "null"
            ]
          },
          "clientCertPassword": {
            "description": "Password string for client certificate if it is encrypted",
            "type": [
              "string",
              "null"
            ]
          },
          "eap": {
            "description": "List of EAP methods used",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "identity": {
            "description": "Identity string, often for example the user's login name",
            "type": [
              "string",
              "null"
            ]
          },
          "password": {
            "description": "Password string used for EAP authentication",
            "type": [
              "string",
              "null"
            ]
          },
          "peapLabel": {
            "description": "Force the use of the new PEAP label during key derivation",
            "type": "boolean"
          },
          "peapVersion": {
            "description": "Which PEAP version is used when PEAP is set as the EAP method in the 'eap' property",
            "type": [
              "string",
              "null"
            ]
          },
          "phase2Auth": {
            "description": "Phase 2 inner auth method",
            "type": [
              "string",
              "null"
            ]
          },
          "privateKey": {
            "description": "Path to private key",
            "type": [
              "string",
              "null"
            ]
          },
          "privateKeyPassword": {
            "description": "Password string for private key if it is encrypted",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "eap"
        ],
        "type": "object"
      },
      "InitScript": {
        "anyOf": [
          {
            "description": "File or script content, starting with a shebang for scripts.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "Absolute or relative URL to fetch the file or script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs during the first boot of the target system,\nonce the installation is finished.",
        "properties": {
          "name": {
            "description": "Script name, to be used as file name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "IpConfig": {
        "properties": {
          "addresses": {
            "items": {
              "$ref": "#/components/schemas/IpInet"
            },
            "type": "array"
          },
          "dhcp4Settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Dhcp4Settings"
              },
              {
                "type": "null"
              }
            ]
          },
          "dhcp6Settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Dhcp6Settings"
              },
              {
                "type": "null"
              }
            ]
          },
          "dnsPriority4": {
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "dnsPriority6": {
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "dnsSearchList": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gateway4": {
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "gateway6": {
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "ignoreAutoDns": {
            "type": "boolean"
          },
          "ignoreAutoRoutes4": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "ignoreAutoRoutes6": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "ip6Privacy": {
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "linkLocal4": {
            "$ref": "#/components/schemas/LinkLocal"
          },
          "method4": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv4Method"
              },
              {
                "type": "null"
              }
            ]
          },
          "method6": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv6Method"
              },
              {
                "type": "null"
              }
            ]
          },
          "nameservers": {
            "items": {
              "format": "ip",
              "type": "string"
            },
            "type": "array"
          },
          "neverDefault4": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "neverDefault6": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "routes4": {
            "items": {
              "$ref": "#/components/schemas/IpRoute"
            },
            "type": "array"
          },
          "routes6": {
            "items": {
              "$ref": "#/components/schemas/IpRoute"
            },
            "type": "array"
          }
        },
        "required": [
          "ignoreAutoDns",
          "linkLocal4"
        ],
        "type": "object"
      },
      "IpInet": {
        "description": "An IP address (IPv4 or IPv6) with prefix length in CIDR notation",
        "examples": [
          "192.168.1.254/24",
          "2001:db8::/32"
        ],
        "type": "string"
      },
      "IpRoute": {
        "properties": {
          "destination": {
            "$ref": "#/components/schemas/IpInet"
          },
          "metric": {
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "nextHop": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "destination"
        ],
        "type": "object"
      },
      "Ipv4Method": {
        "enum": [
          "disabled",
          "auto",
          "manual",
          "linkLocal",
          "shared"
        ],
        "type": "string"
      },
      "Ipv6Method": {
        "enum": [
          "disabled",
          "auto",
          "manual",
          "linkLocal",
          "ignore",
          "dhcp",
          "shared"
        ],
        "type": "string"
      },
      "IscsiConfig": {
        "additionalProperties": false,
        "description": "iSCSI config.",
        "properties": {
          "initiator": {
            "description": "Initiator name.",
            "type": "string"
          },
          "targets": {
            "description": "List of targets.",
            "items": {
              "$ref": "#/components/schemas/IscsiConfigTarget"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "IscsiConfigAuthentication": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "type": "object"
      },
      "IscsiConfigTarget": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "description": "IP address.",
            "type": "string"
          },
          "authByInitiator": {
            "$ref": "#/components/schemas/IscsiConfigAuthentication"
          },
          "authByTarget": {
            "$ref": "#/components/schemas/IscsiConfigAuthentication"
          },
          "interface": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "port": {
            "minimum": 0,
            "type": "integer"
          },
          "startup": {
            "enum": [
              "onboot",
              "manual",
              "automatic"
            ]
          }
        },
        "required": [
          "address",
          "port",
          "name",
          "interface"
        ],
        "type": "object"
      },
      "IscsiSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the iSCSI system",
        "properties": {
          "initiator": {
            "additionalProperties": false,
            "properties": {
              "ibft": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "ibft"
            ],
            "title": "Initiator",
            "type": "object"
          },
          "targets": {
            "items": {
              "$ref": "#/components/schemas/IscsiSystemInfoTarget"
            },
            "type": "array"
          }
        },
        "required": [
          "initiator",
          "targets"
        ],
        "title": "System",
        "type": "object"
      },
      "IscsiSystemInfoTarget": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string"
          },
          "connected": {
            "description": "Whether the node is connected (there is a session).",
            "type": "boolean"
          },
          "ibft": {
            "description": "Whether the target was initiated by iBFT.",
            "type": "boolean"
          },
          "interface": {
            "type": "string"
          },
          "locked": {
            "description": "Whether the node is locked (cannot be deactivated)",
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "port": {
            "type": "number"
          },
          "startup": {
            "enum": [
              "onboot",
              "manual",
              "automatic"
            ]
          }
        },
        "required": [
          "name",
          "address",
          "port",
          "interface",
          "ibft",
          "startup",
          "connected",
          "locked"
        ],
        "type": "object"
      },
      "IssueWithScope": {
        "properties": {
          "class": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "details": {
            "type": [
              "string",
              "null"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/Scope"
          }
        },
        "required": [
          "scope",
          "class",
          "description"
        ],
        "type": "object"
      },
      "Keymap": {
        "properties": {
          "description": {
            "description": "Keymap description",
            "type": "string"
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KeymapId"
              }
            ],
            "description": "Keymap identifier (e.g., \"us\")"
          }
        },
        "required": [
          "id",
          "description"
        ],
        "type": "object"
      },
      "KeymapId": {
        "description": "Keymap layout identifier\n\n```\nuse agama_locale_data::KeymapId;\nuse std::str::FromStr;\n\nlet id: KeymapId = \"es(ast)\".parse().unwrap();\nassert_eq!(id.layout, \"es\");\nassert_eq!(id.variant, Some(\"ast\".to_string()));\nassert_eq!(id.dashed(), \"es-ast\".to_string());\n\nlet id_with_dashes: KeymapId = \"es-ast\".parse().unwrap();\nassert_eq!(id, id_with_dashes);\n```",
        "properties": {
          "layout": {
            "description": "Keyboard layout (e.g., \"es\" in \"es(ast)\")",
            "type": "string"
          },
          "variant": {
            "description": "Keyboard variante (e.g., \"ast\" in \"es(ast)\")",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "layout"
        ],
        "type": "object"
      },
      "License": {
        "description": "Represents a product license.\n\nIt contains the license ID and name, in the current system language.",
        "properties": {
          "id": {
            "description": "License ID.",
            "type": "string"
          },
          "name": {
            "description": "License name.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "LicenseContent": {
        "description": "Represents a license content.\n\nIt contains the license ID, name and body. The name is extracted from the first paragraph of\nthe license text; the body is the rest of it.",
        "properties": {
          "body": {
            "description": "License text.",
            "type": "string"
          },
          "id": {
            "description": "License ID.",
            "type": "string"
          },
          "language": {
            "description": "License language.",
            "type": "string"
          },
          "name": {
            "description": "License name.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "body",
          "language"
        ],
        "type": "object"
      },
      "LinkLocal": {
        "enum": [
          "default",
          "auto",
          "disabled",
          "enabled",
          "fallback"
        ],
        "type": "string"
      },
      "LocaleEntry": {
        "description": "Represents a locale, including the localized language and territory.",
        "properties": {
          "consolefont": {
            "description": "Console font",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "The locale code (e.g., \"es_ES.UTF-8\").",
            "type": "string"
          },
          "language": {
            "description": "Localized language name (e.g., \"Spanish\", \"Español\", etc.)",
            "type": "string"
          },
          "territory": {
            "description": "Localized territory name (e.g., \"Spain\", \"España\", etc.)",
            "type": "string"
          }
        },
        "required": [
          "id",
          "language",
          "territory"
        ],
        "type": "object"
      },
      "LoginRequest": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "password": {
            "description": "User password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "LoginRequest",
        "type": "object"
      },
      "MatchSettings": {
        "properties": {
          "driver": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interface": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kernel": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "path": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "NetworkConnection": {
        "description": "Represents the configuration details for a network connection",
        "properties": {
          "addresses": {
            "description": "List of assigned IP addresses",
            "items": {
              "$ref": "#/components/schemas/IpInet"
            },
            "type": "array"
          },
          "autoconnect": {
            "description": "Specifies if the connection should automatically connect",
            "type": [
              "boolean",
              "null"
            ]
          },
          "bond": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BondSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bonding settings if part of a bond"
          },
          "bridge": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BridgeSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bridge settings if part of a bridge"
          },
          "customMacAddress": {
            "description": "Custom MAC address of the connection's interface",
            "type": [
              "string",
              "null"
            ]
          },
          "dnsSearchList": {
            "description": "List of search domains for DNS resolution",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gateway4": {
            "description": "Gateway IP address for the IPv4 connection",
            "examples": [
              "192.168.122.1"
            ],
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "gateway6": {
            "description": "Gateway IP address for the IPv6 connection",
            "examples": [
              "::ffff:c0a8:7a01"
            ],
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Unique identifier for the network connection",
            "type": "string"
          },
          "ieee8021x": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IEEE8021XSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "IEEE 802.1X settings"
          },
          "ignoreAutoDns": {
            "description": "Specifies whether to ignore automatically assigned DNS settings",
            "type": [
              "boolean",
              "null"
            ]
          },
          "interface": {
            "description": "Network interface associated with the connection",
            "type": [
              "string",
              "null"
            ]
          },
          "macAddress": {
            "description": "MAC address of the connection's interface",
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MatchSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Match settings for the network connection"
          },
          "method4": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv4Method"
              },
              {
                "type": "null"
              }
            ],
            "description": "IPv4 method used for the network connection"
          },
          "method6": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv6Method"
              },
              {
                "type": "null"
              }
            ],
            "description": "IPv6 method used for the network connection"
          },
          "mtu": {
            "description": "Maximum Transmission Unit (MTU) for the connection",
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "nameservers": {
            "description": "List of DNS server IP addresses",
            "items": {
              "format": "ip",
              "type": "string"
            },
            "type": "array"
          },
          "parent": {
            "description": "Identifier for the parent connection, if this connection is part of a bond",
            "type": [
              "string",
              "null"
            ]
          },
          "persistent": {
            "description": "Specifies whether the connection should be persisted or not",
            "type": [
              "boolean",
              "null"
            ]
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Status2"
              },
              {
                "type": "null"
              }
            ],
            "description": "Current status of the network connection"
          },
          "vlan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VlanSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "VLAN settings for the connection"
          },
          "wireless": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WirelessSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Wireless settings for the connection"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "NetworkConnectionWithState": {
        "description": "Represents the configuration details for a network connection",
        "properties": {
          "addresses": {
            "description": "List of assigned IP addresses",
            "items": {
              "$ref": "#/components/schemas/IpInet"
            },
            "type": "array"
          },
          "autoconnect": {
            "description": "Specifies if the connection should automatically connect",
            "type": [
              "boolean",
              "null"
            ]
          },
          "bond": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BondSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bonding settings if part of a bond"
          },
          "bridge": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BridgeSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bridge settings if part of a bridge"
          },
          "customMacAddress": {
            "description": "Custom MAC address of the connection's interface",
            "type": [
              "string",
              "null"
            ]
          },
          "dnsSearchList": {
            "description": "List of search domains for DNS resolution",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gateway4": {
            "description": "Gateway IP address for the IPv4 connection",
            "examples": [
              "192.168.122.1"
            ],
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "gateway6": {
            "description": "Gateway IP address for the IPv6 connection",
            "examples": [
              "::ffff:c0a8:7a01"
            ],
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Unique identifier for the network connection",
            "type": "string"
          },
          "ieee8021x": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IEEE8021XSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "IEEE 802.1X settings"
          },
          "ignoreAutoDns": {
            "description": "Specifies whether to ignore automatically assigned DNS settings",
            "type": [
              "boolean",
              "null"
            ]
          },
          "interface": {
            "description": "Network interface associated with the connection",
            "type": [
              "string",
              "null"
            ]
          },
          "macAddress": {
            "description": "MAC address of the connection's interface",
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MatchSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Match settings for the network connection"
          },
          "method4": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv4Method"
              },
              {
                "type": "null"
              }
            ],
            "description": "IPv4 method used for the network connection"
          },
          "method6": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ipv6Method"
              },
              {
                "type": "null"
              }
            ],
            "description": "IPv6 method used for the network connection"
          },
          "mtu": {
            "description": "Maximum Transmission Unit (MTU) for the connection",
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "nameservers": {
            "description": "List of DNS server IP addresses",
            "items": {
              "format": "ip",
              "type": "string"
            },
            "type": "array"
          },
          "parent": {
            "description": "Identifier for the parent connection, if this connection is part of a bond",
            "type": [
              "string",
              "null"
            ]
          },
          "persistent": {
            "description": "Specifies whether the connection should be persisted or not",
            "type": [
              "boolean",
              "null"
            ]
          },
          "state": {
            "$ref": "#/components/schemas/ConnectionState"
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Status2"
              },
              {
                "type": "null"
              }
            ],
            "description": "Current status of the network connection"
          },
          "vlan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VlanSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "VLAN settings for the connection"
          },
          "wireless": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WirelessSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Wireless settings for the connection"
          }
        },
        "required": [
          "id",
          "state"
        ],
        "type": "object"
      },
      "NetworkConnectionsCollection": {
        "items": {
          "$ref": "#/components/schemas/NetworkConnection"
        },
        "type": "array"
      },
      "NetworkConnectionsWithStateCollection": {
        "items": {
          "$ref": "#/components/schemas/NetworkConnectionWithState"
        },
        "type": "array"
      },
      "Patch": {
        "description": "Patch for the config.",
        "properties": {
          "update": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Config"
              },
              {
                "type": "null"
              }
            ],
            "description": "Update for the current config."
          }
        },
        "type": "object"
      },
      "Pattern": {
        "properties": {
          "category": {
            "description": "Pattern category (e.g., \"Production\")",
            "type": "string"
          },
          "description": {
            "description": "Pattern description",
            "type": "string"
          },
          "desktop": {
            "description": "Whether the pattern represents a desktop (e.g., gnome).",
            "type": "boolean"
          },
          "name": {
            "description": "Pattern name (eg., \"aaa_base\", \"gnome\")",
            "type": "string"
          },
          "order": {
            "description": "Pattern order",
            "type": "string"
          },
          "preselected": {
            "description": "Whether the pattern is selected by default",
            "type": "boolean"
          },
          "summary": {
            "description": "Pattern summary",
            "type": "string"
          }
        },
        "required": [
          "name",
          "category",
          "description",
          "summary",
          "order",
          "preselected",
          "desktop"
        ],
        "type": "object"
      },
      "PatternsConfig": {
        "anyOf": [
          {
            "description": "List of user-selected patterns to install.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PatternsMap"
              }
            ],
            "description": "Modifications for the list of user-selected patterns to install."
          }
        ],
        "description": "List or modification map of user-selected patterns to install."
      },
      "PatternsMap": {
        "description": "Modifications for the list of user-selected patterns to install",
        "properties": {
          "add": {
            "description": "List of user-selected patterns to add to the list.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "remove": {
            "description": "List of user-selected patterns to remove from the list.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "Policy": {
        "oneOf": [
          {
            "const": "auto",
            "description": "Automatically answer questions.",
            "type": "string"
          },
          {
            "const": "user",
            "description": "Ask the user.",
            "type": "string"
          }
        ]
      },
      "PostPartitioningScript": {
        "anyOf": [
          {
            "description": "File or script content, starting with a shebang for scripts.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "Absolute or relative URL to fetch the file or script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs after partitioning.",
        "properties": {
          "name": {
            "description": "Script name, to be used as file name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PostScript": {
        "anyOf": [
          {
            "description": "File or script content, starting with a shebang for scripts.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "Absolute or relative URL to fetch the file or script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs after the installation finishes.",
        "properties": {
          "chroot": {
            "description": "Whether the script should be run in a chroot environment.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "name": {
            "description": "Script name, to be used as file name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PreScript": {
        "anyOf": [
          {
            "description": "File or script content, starting with a shebang for scripts.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "Absolute or relative URL to fetch the file or script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs before the installation starts.",
        "properties": {
          "name": {
            "description": "Script name, to be used as file name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ProblemDetails": {
        "description": "Problem Details for HTTP APIs (RFC 9457)\n\nThis enum represents different types of API errors following RFC 9457.\nEach variant contains only the fields relevant to that specific error type.\n\nThe `type` field (used for i18n) is determined by the enum variant,\nand the HTTP status code is determined by the server.\n\n# Examples\n\nDeserializing a schema validation error from JSON:\n\n```\n# use agama_utils::api::ProblemDetails;\nlet json = r#\"{\n  \"type\": \"tag:agama.opensuse.org,2026:problems/schema-validation-failed\",\n  \"title\": \"Schema Validation Failed\",\n  \"detail\": \"The provided configuration does not match the required schema\",\n  \"errors\": [\"/network/hostname: is required\"]\n}\"#;\n\nlet problem: ProblemDetails = serde_json::from_str(json).unwrap();\nmatch problem {\n    ProblemDetails::SchemaValidationFailed { errors, .. } => {\n        assert_eq!(errors.len(), 1);\n    }\n    _ => panic!(\"Expected SchemaValidationFailed\"),\n}\n```",
        "oneOf": [
          {
            "description": "Schema validation failed (HTTP 400)",
            "properties": {
              "detail": {
                "description": "Detailed explanation",
                "type": [
                  "string",
                  "null"
                ]
              },
              "errors": {
                "description": "List of validation error messages",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "title": {
                "description": "Short summary",
                "type": "string"
              },
              "type": {
                "const": "tag:agama.opensuse.org,2026:problems/schema-validation-failed",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "errors"
            ],
            "type": "object"
          },
          {
            "description": "Invalid JSON in request body (HTTP 400)",
            "properties": {
              "detail": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "title": {
                "type": "string"
              },
              "type": {
                "const": "tag:agama.opensuse.org,2026:problems/invalid-json",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title"
            ],
            "type": "object"
          },
          {
            "description": "Internal server error (HTTP 500)",
            "properties": {
              "detail": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "const": "tag:agama.opensuse.org,2026:problems/internal-error",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "detail"
            ],
            "type": "object"
          },
          {
            "description": "Unauthorized - authentication required (HTTP 401)",
            "properties": {
              "detail": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "const": "tag:agama.opensuse.org,2026:problems/unauthorized",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "detail"
            ],
            "type": "object"
          },
          {
            "description": "Generic error without specific type (HTTP 500)",
            "properties": {
              "detail": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "const": "about:blank",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "detail"
            ],
            "type": "object"
          },
          {
            "description": "Generic client error (HTTP 400)",
            "properties": {
              "detail": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "const": "tag:agama.opensuse.org,2026:problems/bad-request",
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "detail"
            ],
            "type": "object"
          }
        ]
      },
      "Product": {
        "description": "Represents a software product",
        "properties": {
          "description": {
            "description": "Product description (translated to the current UI language)",
            "type": "string"
          },
          "desktopSelection": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DesktopSelection"
              },
              {
                "type": "null"
              }
            ],
            "description": "Desktop selection mode"
          },
          "icon": {
            "description": "Product icon (e.g., \"default.svg\")",
            "type": "string"
          },
          "id": {
            "description": "Product ID (eg., \"SLES\", \"Tumbleweed\", etc.)",
            "type": "string"
          },
          "licenses": {
            "default": [],
            "description": "License IDs (a product may require accepting more than one).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "modes": {
            "default": [],
            "description": "Product modes (names and descriptions are translated to the current UI language)",
            "items": {
              "$ref": "#/components/schemas/ProductMode"
            },
            "type": "array"
          },
          "name": {
            "description": "Product name (e.g., \"openSUSE Tumbleweed\")",
            "type": "string"
          },
          "registration": {
            "description": "Registration requirement",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "icon",
          "registration"
        ],
        "type": "object"
      },
      "ProductConfig": {
        "additionalProperties": false,
        "description": "Software settings for installation",
        "properties": {
          "addons": {
            "description": "List of product addons to register and install.",
            "items": {
              "$ref": "#/components/schemas/AddonConfig"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "id": {
            "description": "ID of the product to install (e.g., \"SLES\", \"Tumbleweed\", etc.).",
            "examples": [
              "Tumbleweed",
              "MicroOS",
              "Slowroll",
              "openSUSE_Leap",
              "SLES",
              "Kalpa"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "mode": {
            "description": "The mode from the products.d/foo.yaml file.",
            "type": [
              "string",
              "null"
            ]
          },
          "registrationCode": {
            "description": "Product registration code.",
            "type": [
              "string",
              "null"
            ]
          },
          "registrationEmail": {
            "description": "Product registration email.",
            "type": [
              "string",
              "null"
            ]
          },
          "registrationUrl": {
            "description": "URL of the registration server.",
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "Product to install",
        "type": "object"
      },
      "ProductMode": {
        "properties": {
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description"
        ],
        "type": "object"
      },
      "Progress": {
        "properties": {
          "index": {
            "description": "Index of the current step",
            "format": "uint",
            "minimum": 0,
            "type": "integer"
          },
          "scope": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Scope"
              }
            ],
            "description": "Scope of the progress"
          },
          "size": {
            "description": "Max number of steps",
            "format": "uint",
            "minimum": 0,
            "type": "integer"
          },
          "step": {
            "description": "Current step",
            "type": "string"
          },
          "steps": {
            "description": "List of steps",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "scope",
          "size",
          "steps",
          "step",
          "index"
        ],
        "type": "object"
      },
      "Proposal": {
        "properties": {
          "access": {
            "$ref": "#/components/schemas/access.ExtendedConfig"
          },
          "hostname": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/hostname.Proposal"
              },
              {
                "type": "null"
              }
            ]
          },
          "l10n": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/l10n.Proposal"
              },
              {
                "type": "null"
              }
            ]
          },
          "network": {
            "$ref": "#/components/schemas/network.Proposal"
          },
          "software": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/software.Proposal"
              },
              {
                "type": "null"
              }
            ]
          },
          "storage": {
            "$ref": "#/components/schemas/StorageProposal"
          },
          "users": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/users.Config"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "network",
          "access"
        ],
        "type": "object"
      },
      "Question": {
        "description": "Represents a question including its [specification](QuestionSpec) and [answer](QuestionAnswer).",
        "properties": {
          "actions": {
            "description": "List of available actions.",
            "items": {
              "$ref": "#/components/schemas/questions.Action"
            },
            "type": "array"
          },
          "answer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/questions.Answer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Question answer."
          },
          "class": {
            "description": "Question class (e.g., \"autoyastUnsupported\"). It works as a hint for\nthe UI or to match pre-defined answers. The values that are understood\nby Agama's UI are documented [in the Questions\npage](https://agama-project.github.io/docs/user/reference/profile/answers).",
            "type": "string"
          },
          "data": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional data that can be set for any question.",
            "type": "object"
          },
          "defaultAction": {
            "description": "Default action.",
            "type": [
              "string",
              "null"
            ]
          },
          "field": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QuestionField"
              }
            ],
            "default": {
              "type": "none"
            },
            "description": "Optionally, a question might define an additional field (e.g., a\npassword, a selector, etc.)."
          },
          "id": {
            "description": "Question ID.",
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "text": {
            "description": "Question text.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "text",
          "class",
          "actions"
        ],
        "type": "object"
      },
      "QuestionField": {
        "description": "Question field.\n\nApart from the actions, a question can include a field. The field can go\nfrom a string to a selector.\n\nThe field is usually presented as a control in a form.",
        "oneOf": [
          {
            "description": "No field.",
            "properties": {
              "type": {
                "const": "none",
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          },
          {
            "description": "A simple string field.",
            "properties": {
              "type": {
                "const": "string",
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          },
          {
            "description": "A password field.",
            "properties": {
              "type": {
                "const": "password",
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          },
          {
            "description": "A selector field.",
            "properties": {
              "options": {
                "items": {
                  "$ref": "#/components/schemas/SelectionOption"
                },
                "type": "array"
              },
              "type": {
                "const": "select",
                "type": "string"
              }
            },
            "required": [
              "type",
              "options"
            ],
            "type": "object"
          }
        ]
      },
      "QuestionSpec": {
        "description": "Defines how a question should look like.\n\nA question is composed by a set of actions and, optionally, and additional\nfield. For instance, a question to decrypt a device using a password would have:\n\n* a pair of actions, \"decrypt\" and \"skip\".\n* a password field.\n\nIn other cases, like a simple \"yes/no\" questions, the field would not be needed.",
        "properties": {
          "actions": {
            "description": "List of available actions.",
            "items": {
              "$ref": "#/components/schemas/questions.Action"
            },
            "type": "array"
          },
          "class": {
            "description": "Question class (e.g., \"autoyastUnsupported\"). It works as a hint for\nthe UI or to match pre-defined answers. The values that are understood\nby Agama's UI are documented [in the Questions\npage](https://agama-project.github.io/docs/user/reference/profile/answers).",
            "type": "string"
          },
          "data": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional data that can be set for any question.",
            "type": "object"
          },
          "defaultAction": {
            "description": "Default action.",
            "type": [
              "string",
              "null"
            ]
          },
          "field": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QuestionField"
              }
            ],
            "default": {
              "type": "none"
            },
            "description": "Optionally, a question might define an additional field (e.g., a\npassword, a selector, etc.)."
          },
          "text": {
            "description": "Question text.",
            "type": "string"
          }
        },
        "required": [
          "text",
          "class",
          "actions"
        ],
        "type": "object"
      },
      "RegistrationInfo": {
        "properties": {
          "addons": {
            "description": "Available add-ons.",
            "items": {
              "$ref": "#/components/schemas/AddonInfo"
            },
            "type": "array"
          },
          "code": {
            "description": "Registration code.",
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "description": "Registration e-mail.",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "URL of the registration server.",
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "addons"
        ],
        "type": "object"
      },
      "RepositoryConfig": {
        "description": "Parameters for creating new a repository",
        "properties": {
          "alias": {
            "description": "repository alias. Has to be unique",
            "type": "string"
          },
          "allowUnsigned": {
            "description": "Whenever repository can be unsigned. Default is false",
            "type": [
              "boolean",
              "null"
            ]
          },
          "enabled": {
            "description": "Whether the repository is enabled, if missing the repository is enabled",
            "type": [
              "boolean",
              "null"
            ]
          },
          "gpgFingerprints": {
            "description": "List of fingerprints for GPG keys used for repository signing. If specified,\nthe new list of fingerprints overrides the existing ones instead of merging\nwith them. By default empty.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "name": {
            "description": "repository name, if not specified the alias is used",
            "type": [
              "string",
              "null"
            ]
          },
          "priority": {
            "description": "Repository priority, lower number means higher priority, the default priority is 99",
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "productDir": {
            "description": "product directory (currently not used, valid only for multiproduct DVDs)",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "Repository url (raw format without expanded variables)",
            "type": "string"
          }
        },
        "required": [
          "alias",
          "url"
        ],
        "type": "object"
      },
      "RootUserConfig": {
        "description": "Root user settings\n\nHolds the settings for the root user.",
        "properties": {
          "hashedPassword": {
            "default": false,
            "description": "Whether the password is hashed or is plain text",
            "type": "boolean"
          },
          "password": {
            "description": "User password",
            "examples": [
              "nots3cr3t"
            ],
            "type": "string"
          },
          "sshPublicKey": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ],
            "deprecated": true,
            "description": "Root SSH public key"
          },
          "sshPublicKeys": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ],
            "description": "Root SSH public key"
          }
        },
        "title": "Root authentication settings",
        "type": "object"
      },
      "SSLFingerprint": {
        "properties": {
          "algorithm": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SSLFingerprintAlgorithm"
              }
            ],
            "default": "SHA256",
            "description": "Algorithm used to compute SSL certificate fingerprint.\nSupported options are \"SHA1\" and \"SHA256\""
          },
          "fingerprint": {
            "description": "The string value for SSL certificate fingerprint.\nExample value is \"F6:7A:ED:BB:BC:94:CF:55:9D:B3:BA:74:7A:87:05:EF:67:4E:C2:DB\"",
            "examples": [
              "A8:DE:08:B1:57:52:FE:70:DF:D5:31:EA:E3:53:BB:39:EE:01:FF:B9"
            ],
            "type": "string"
          }
        },
        "required": [
          "fingerprint"
        ],
        "type": "object"
      },
      "SSLFingerprintAlgorithm": {
        "enum": [
          "SHA1",
          "SHA256"
        ],
        "type": "string"
      },
      "Scope": {
        "description": "Scope to distinguish each service.",
        "enum": [
          "access",
          "bootloader",
          "manager",
          "network",
          "ntp",
          "hostname",
          "l10n",
          "product",
          "proxy",
          "questions",
          "security",
          "software",
          "storage",
          "files",
          "iscsi",
          "dasd",
          "zfcp",
          "users"
        ],
        "type": "string"
      },
      "ScriptsConfig": {
        "properties": {
          "init": {
            "description": "User-defined init scripts",
            "items": {
              "$ref": "#/components/schemas/InitScript"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "post": {
            "description": "User-defined post-installation scripts",
            "items": {
              "$ref": "#/components/schemas/PostScript"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "postPartitioning": {
            "description": "User-defined post-partitioning scripts",
            "items": {
              "$ref": "#/components/schemas/PostPartitioningScript"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "pre": {
            "description": "User-defined pre-installation scripts",
            "items": {
              "$ref": "#/components/schemas/PreScript"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "title": "User-defined installation scripts",
        "type": "object"
      },
      "SelectedBy": {
        "description": "Represents the reason why a pattern is selected.",
        "oneOf": [
          {
            "enum": [
              "removed"
            ],
            "type": "string"
          },
          {
            "const": "user",
            "description": "The pattern was selected by the user.",
            "type": "string"
          },
          {
            "const": "auto",
            "description": "The pattern was selected automatically.",
            "type": "string"
          },
          {
            "const": "none",
            "description": "The pattern has not been selected.",
            "type": "string"
          }
        ]
      },
      "SelectionOption": {
        "description": "Selector option.",
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ],
        "type": "object"
      },
      "SoftwareConfig": {
        "description": "Software settings for installation",
        "properties": {
          "extraRepositories": {
            "description": "List of user specified repositories to use on top of default ones.",
            "items": {
              "$ref": "#/components/schemas/RepositoryConfig"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "onlyRequired": {
            "description": "Flag indicating if only hard requirements should be used by solver.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "packages": {
            "description": "List of user selected packages to install.",
            "examples": [
              [
                "vim"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "patterns": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PatternsConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "List of user selected patterns to install.",
            "examples": [
              [
                "minimal_base"
              ]
            ]
          }
        },
        "type": "object"
      },
      "Source": {
        "description": "NTP source configuration.",
        "properties": {
          "address": {
            "description": "NTP server or pool address.",
            "examples": [
              "0.opensuse.pool.ntp.org",
              "ntp.example.com"
            ],
            "type": "string"
          },
          "iburst": {
            "default": false,
            "description": "Send a burst of packets for faster initial synchronization.",
            "type": "boolean"
          },
          "offline": {
            "default": false,
            "description": "Start with the source marked as offline (can be activated later).",
            "type": "boolean"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SourceType"
              }
            ],
            "description": "Type of NTP source: pool (pool of servers), server (single server), or peer (symmetric association)."
          }
        },
        "required": [
          "type",
          "address"
        ],
        "title": "NTP source",
        "type": "object"
      },
      "SourceType": {
        "description": "NTP source type (pool, server, or peer).",
        "enum": [
          "pool",
          "server",
          "peer"
        ],
        "type": "string"
      },
      "Stage": {
        "description": "Represents the current state of the installation process.",
        "oneOf": [
          {
            "const": "configuring",
            "description": "Configuring the installation",
            "type": "string"
          },
          {
            "const": "installing",
            "description": "Installing the system",
            "type": "string"
          },
          {
            "const": "finished",
            "description": "Installation finished",
            "type": "string"
          },
          {
            "const": "failed",
            "description": "Installation failed",
            "type": "string"
          }
        ]
      },
      "StateSettings": {
        "description": "Network general settings for the installation like enabling wireless, networking and\nallowing to enable or disable the copy of the network settings to the\ntarget system",
        "properties": {
          "connectivity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConnectivityState"
              },
              {
                "type": "null"
              }
            ]
          },
          "copyNetwork": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "networkingEnabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "wirelessEnabled": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "Status": {
        "properties": {
          "progresses": {
            "description": "Active progresses",
            "items": {
              "$ref": "#/components/schemas/Progress"
            },
            "type": "array"
          },
          "stage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Stage"
              }
            ],
            "description": "Stage of the installation"
          },
          "tasks": {
            "description": "Active tasks",
            "items": {
              "$ref": "#/components/schemas/Task"
            },
            "type": "array"
          }
        },
        "required": [
          "stage",
          "tasks",
          "progresses"
        ],
        "type": "object"
      },
      "Status2": {
        "enum": [
          "up",
          "down",
          "removed",
          "keep"
        ],
        "type": "string"
      },
      "StorageConfig": {
        "$comment": "Based on doc/auto_storage.md",
        "additionalProperties": false,
        "description": "Storage config.",
        "properties": {
          "boot": {
            "$ref": "#/components/schemas/StorageConfigBoot"
          },
          "drives": {
            "description": "Drives (disks, BIOS RAIDs and multipath devices).",
            "items": {
              "$ref": "#/components/schemas/StorageConfigDriveElement"
            },
            "type": "array"
          },
          "mdRaids": {
            "description": "MD RAIDs.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigMdRaidElement"
            },
            "type": "array"
          },
          "volumeGroups": {
            "description": "LVM volume groups.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigVolumeGroup"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "StorageConfigAdvancedLogicalVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the default or mandatory logical volumes configured by the selected product.",
        "properties": {
          "generate": {
            "additionalProperties": false,
            "properties": {
              "encryption": {
                "$ref": "#/components/schemas/StorageConfigEncryption"
              },
              "logicalVolumes": {
                "enum": [
                  "default",
                  "mandatory"
                ]
              },
              "stripeSize": {
                "$ref": "#/components/schemas/StorageConfigSizeValue"
              },
              "stripes": {
                "$ref": "#/components/schemas/StorageConfigLogicalVolumeStripes"
              }
            },
            "required": [
              "logicalVolumes"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageConfigAdvancedPartitionsGenerator": {
        "additionalProperties": false,
        "description": "Creates the default or mandatory partitions configured by the selected product.",
        "properties": {
          "generate": {
            "additionalProperties": false,
            "properties": {
              "encryption": {
                "$ref": "#/components/schemas/StorageConfigEncryption"
              },
              "partitions": {
                "enum": [
                  "default",
                  "mandatory"
                ]
              }
            },
            "required": [
              "partitions"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageConfigAdvancedPhysicalVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the needed physical volumes in the indicated devices.",
        "properties": {
          "generate": {
            "additionalProperties": false,
            "properties": {
              "encryption": {
                "$ref": "#/components/schemas/StorageConfigEncryption"
              },
              "spacePolicy": {
                "default": "useNeeded",
                "description": "Policy for creating physical volumes: either using all the available space or only the needed space for allocating the logical volumes.",
                "enum": [
                  "useNeeded",
                  "useAvailable"
                ]
              },
              "targetDevices": {
                "items": {
                  "$ref": "#/components/schemas/StorageConfigAlias"
                },
                "type": "array"
              }
            },
            "required": [
              "targetDevices"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageConfigAlias": {
        "description": "Alias used to reference a device.",
        "type": "string"
      },
      "StorageConfigBaseName": {
        "description": "Device base name.",
        "examples": [
          "system"
        ],
        "pattern": "^[^/]+$",
        "type": "string"
      },
      "StorageConfigBoot": {
        "additionalProperties": false,
        "description": "Allows configuring boot partitions automatically.",
        "properties": {
          "configure": {
            "description": "Whether to configure partitions for booting.",
            "type": "boolean"
          },
          "device": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          }
        },
        "required": [
          "configure"
        ],
        "type": "object"
      },
      "StorageConfigDeleteLogicalVolumeAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigDeleteLogicalVolumeSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDeleteLogicalVolumeAdvancedSearch"
          }
        ]
      },
      "StorageConfigDeletePartitionAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigDeletePartitionSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDeletePartitionAdvancedSearch"
          }
        ]
      },
      "StorageConfigDriveAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigDriveSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigDriveSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigDriveElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigNonPartitionedDrive"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionedDrive"
          }
        ]
      },
      "StorageConfigDriveSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDriveAdvancedSearch"
          }
        ]
      },
      "StorageConfigDriveSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionDriver"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionBoss"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionPartitions"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchConditionNot"
          }
        ]
      },
      "StorageConfigDriveSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigDriveSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigDriveSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigDriveSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigDriveSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigDriveSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigDriveSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageConfigDriveSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageConfigDriveSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageConfigDriveSearchSortCriterionFull"
          }
        ]
      },
      "StorageConfigDriveSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageConfigDriveSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageConfigEncryption": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigEncryptionLuks1"
          },
          {
            "$ref": "#/components/schemas/StorageConfigEncryptionLuks2"
          },
          {
            "$ref": "#/components/schemas/StorageConfigEncryptionPervasiveLuks2"
          },
          {
            "$ref": "#/components/schemas/StorageConfigEncryptionTpmFde"
          },
          {
            "$ref": "#/components/schemas/StorageConfigEncryptionSwap"
          }
        ]
      },
      "StorageConfigEncryptionCipher": {
        "description": "The value must be compatible with the --cipher argument of the command cryptsetup.",
        "type": "string"
      },
      "StorageConfigEncryptionKeySize": {
        "description": "The value (in bits) has to be a multiple of 8. The possible key sizes are limited by the used cipher.",
        "multipleOf": 8,
        "type": "integer"
      },
      "StorageConfigEncryptionLuks1": {
        "additionalProperties": false,
        "description": "LUKS1 encryption.",
        "properties": {
          "luks1": {
            "additionalProperties": false,
            "properties": {
              "cipher": {
                "$ref": "#/components/schemas/StorageConfigEncryptionCipher"
              },
              "keySize": {
                "$ref": "#/components/schemas/StorageConfigEncryptionKeySize"
              },
              "password": {
                "$ref": "#/components/schemas/StorageConfigEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "luks1"
        ],
        "type": "object"
      },
      "StorageConfigEncryptionLuks2": {
        "additionalProperties": false,
        "description": "LUKS2 encryption.",
        "properties": {
          "luks2": {
            "additionalProperties": false,
            "properties": {
              "cipher": {
                "$ref": "#/components/schemas/StorageConfigEncryptionCipher"
              },
              "keySize": {
                "$ref": "#/components/schemas/StorageConfigEncryptionKeySize"
              },
              "label": {
                "description": "LUKS2 label.",
                "type": "string"
              },
              "password": {
                "$ref": "#/components/schemas/StorageConfigEncryptionPassword"
              },
              "pbkdFunction": {
                "$ref": "#/components/schemas/StorageConfigEncryptionPbkdFunction"
              },
              "tpm": {
                "default": false,
                "description": "Whether to use TPM2 unlocking.",
                "type": "boolean"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "luks2"
        ],
        "type": "object"
      },
      "StorageConfigEncryptionPassword": {
        "description": "Password to use when creating a new encryption device.",
        "type": "string"
      },
      "StorageConfigEncryptionPbkdFunction": {
        "enum": [
          "pbkdf2",
          "argon2i",
          "argon2id"
        ]
      },
      "StorageConfigEncryptionPervasiveLuks2": {
        "additionalProperties": false,
        "description": "LUKS2 pervasive encryption.",
        "properties": {
          "pervasiveLuks2": {
            "additionalProperties": false,
            "properties": {
              "apqns": {
                "description": "List of APQNs used to generate secure keys.",
                "items": {
                  "examples": [
                    "01.0001",
                    "01.0002"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "keyType": {
                "description": "Type of the generated secure key.",
                "enum": [
                  "EP11-AES",
                  "CCA-AESCIPHER",
                  "CCA-AESDATA"
                ]
              },
              "password": {
                "$ref": "#/components/schemas/StorageConfigEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "pervasiveLuks2"
        ],
        "type": "object"
      },
      "StorageConfigEncryptionSwap": {
        "description": "Swap encryptions. The snake case names are deprecated.",
        "enum": [
          "protected_swap",
          "secure_swap",
          "random_swap",
          "protectedSwap",
          "secureSwap",
          "randomSwap"
        ]
      },
      "StorageConfigEncryptionTpmFde": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "TPM-Based Full Disk Encryption.",
        "properties": {
          "tpmFde": {
            "additionalProperties": false,
            "properties": {
              "password": {
                "$ref": "#/components/schemas/StorageConfigEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "tpmFde"
        ],
        "type": "object"
      },
      "StorageConfigFilesystem": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "description": "File system label.",
            "type": "string"
          },
          "mkfsExtraArguments": {
            "description": "Additional arguments injected as-is to the mkfs command when creating the file system.",
            "type": "string"
          },
          "mkfsOptions": {
            "deprecated": true,
            "description": "Deprecated in favor of mkfsExtraArguments",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "mountBy": {
            "description": "How to mount the device.",
            "enum": [
              "device",
              "id",
              "label",
              "path",
              "uuid"
            ],
            "title": "Mount by"
          },
          "mountOptions": {
            "description": "Options to add to the fourth field of fstab.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "path": {
            "description": "Mount path.",
            "examples": [
              "/var/log"
            ],
            "type": "string"
          },
          "reuseIfPossible": {
            "default": false,
            "description": "Try to reuse the existing file system. In some cases the file system could not be reused, for example, if the device is re-encrypted.",
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/StorageConfigFilesystemType"
          }
        },
        "type": "object"
      },
      "StorageConfigFilesystemCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemConditionType"
          },
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemConditionLabel"
          },
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemConditionNot"
          }
        ],
        "description": "Matches formatted devices whose file system satisfies the condition."
      },
      "StorageConfigFilesystemConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigFilesystemCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigFilesystemConditionLabel": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "description": "File system label.",
            "type": "string"
          }
        },
        "required": [
          "label"
        ],
        "type": "object"
      },
      "StorageConfigFilesystemConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigFilesystemCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigFilesystemConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigFilesystemCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigFilesystemConditionType": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/StorageConfigFilesystemTypeAny"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "StorageConfigFilesystemType": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemTypeAny"
          },
          {
            "$ref": "#/components/schemas/StorageConfigFilesystemTypeBtrfs"
          }
        ]
      },
      "StorageConfigFilesystemTypeAny": {
        "enum": [
          "bcachefs",
          "btrfs",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ]
      },
      "StorageConfigFilesystemTypeBtrfs": {
        "additionalProperties": false,
        "description": "Btrfs file system.",
        "properties": {
          "btrfs": {
            "additionalProperties": false,
            "properties": {
              "snapshots": {
                "description": "Whether to configrue Btrfs snapshots.",
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "btrfs"
        ],
        "type": "object"
      },
      "StorageConfigLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageConfigFilesystem"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          },
          "stripeSize": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          "stripes": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeStripes"
          }
        },
        "type": "object"
      },
      "StorageConfigLogicalVolumeAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigLogicalVolumeElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSimpleVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageConfigAdvancedLogicalVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageConfigThinPoolLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageConfigThinLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeToDelete"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeToDeleteIfNeeded"
          }
        ]
      },
      "StorageConfigLogicalVolumeSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeAdvancedSearch"
          }
        ]
      },
      "StorageConfigLogicalVolumeSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchConditionNot"
          }
        ]
      },
      "StorageConfigLogicalVolumeSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigLogicalVolumeSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigLogicalVolumeSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigLogicalVolumeSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageConfigLogicalVolumeSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeSearchSortCriterionFull"
          }
        ]
      },
      "StorageConfigLogicalVolumeSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageConfigLogicalVolumeSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageConfigLogicalVolumeStripes": {
        "description": "Number of stripes.",
        "maximum": 128,
        "minimum": 1,
        "type": "integer"
      },
      "StorageConfigLogicalVolumeToDelete": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "const": true,
            "description": "Delete the logical volume."
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDeleteLogicalVolumeSearch"
          }
        },
        "required": [
          "delete",
          "search"
        ],
        "type": "object"
      },
      "StorageConfigLogicalVolumeToDeleteIfNeeded": {
        "additionalProperties": false,
        "properties": {
          "deleteIfNeeded": {
            "const": true,
            "description": "Delete the logical volume if needed to make space."
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDeleteLogicalVolumeSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          }
        },
        "required": [
          "deleteIfNeeded",
          "search"
        ],
        "type": "object"
      },
      "StorageConfigMdRaidAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigMdRaidDevices": {
        "description": "Devices used by the MD RAID.",
        "items": {
          "$ref": "#/components/schemas/StorageConfigAlias"
        },
        "type": "array"
      },
      "StorageConfigMdRaidElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigNonPartitionedMdRaid"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionedMdRaid"
          }
        ]
      },
      "StorageConfigMdRaidLevel": {
        "enum": [
          "raid0",
          "raid1",
          "raid5",
          "raid6",
          "raid10"
        ],
        "title": "MD level"
      },
      "StorageConfigMdRaidParity": {
        "description": "Only applies to raid5, raid6 and raid10",
        "enum": [
          "left_asymmetric",
          "left_symmetric",
          "right_asymmetric",
          "right_symmetric",
          "first",
          "last",
          "near_2",
          "offset_2",
          "far_2",
          "near_3",
          "offset_3",
          "far_3"
        ],
        "title": "MD parity"
      },
      "StorageConfigMdRaidSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidAdvancedSearch"
          }
        ]
      },
      "StorageConfigMdRaidSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionPartitions"
          },
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchConditionNot"
          }
        ]
      },
      "StorageConfigMdRaidSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigMdRaidSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigMdRaidSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigMdRaidSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigMdRaidSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigMdRaidSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageConfigMdRaidSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageConfigMdRaidSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearchSortCriterionFull"
          }
        ]
      },
      "StorageConfigMdRaidSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageConfigMdRaidSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageConfigNonPartitionedDrive": {
        "additionalProperties": false,
        "description": "Drive without a partition table (e.g., directly formatted).",
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageConfigFilesystem"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDriveSearch"
          }
        },
        "type": "object"
      },
      "StorageConfigNonPartitionedMdRaid": {
        "additionalProperties": false,
        "description": "MD RAID without a partition table (e.g., directly formatted).",
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "chunkSize": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          "devices": {
            "$ref": "#/components/schemas/StorageConfigMdRaidDevices"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageConfigFilesystem"
          },
          "level": {
            "$ref": "#/components/schemas/StorageConfigMdRaidLevel"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "parity": {
            "$ref": "#/components/schemas/StorageConfigMdRaidParity"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearch"
          }
        },
        "type": "object"
      },
      "StorageConfigPartitionAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigPartitionElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSimpleVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageConfigAdvancedPartitionsGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageConfigRegularPartition"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionToDelete"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionToDeleteIfNeeded"
          }
        ]
      },
      "StorageConfigPartitionIdAny": {
        "description": "Any partition id managed by libstorage-ng. Some ids are only valid for a given partition table type.",
        "enum": [
          "dos12",
          "dos16",
          "ntfs",
          "dos32",
          "extended",
          "diag",
          "prep",
          "swap",
          "linux",
          "irst",
          "lvm",
          "raid",
          "xbootldr",
          "esp",
          "bios_boot",
          "windows_basic_data",
          "microsoft_reserved",
          "linux_home",
          "linux_server_data",
          "linux_root_arm",
          "linux_root_aarch64",
          "linux_root_ppc32",
          "linux_root_ppc64be",
          "linux_root_ppc64le",
          "linux_root_riscv32",
          "linux_root_riscv64",
          "linux_root_s390",
          "linux_root_s390x",
          "linux_root_x86",
          "linux_root_x86_64",
          "linux_usr_arm",
          "linux_usr_aarch64",
          "linux_usr_ppc32",
          "linux_usr_ppc64be",
          "linux_usr_ppc64le",
          "linux_usr_riscv32",
          "linux_usr_riscv64",
          "linux_usr_s390",
          "linux_usr_s390x",
          "linux_usr_x86",
          "linux_usr_x86_64"
        ],
        "title": "Partition id"
      },
      "StorageConfigPartitionSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionAdvancedSearch"
          }
        ]
      },
      "StorageConfigPartitionSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionPartitionNumber"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionPartitionId"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchConditionNot"
          }
        ]
      },
      "StorageConfigPartitionSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigPartitionSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigPartitionSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigPartitionSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageConfigPartitionSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageConfigPartitionSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchSortCriterionFull"
          }
        ]
      },
      "StorageConfigPartitionSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "number": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageConfigPartitionSearchSortCriterionShort": {
        "enum": [
          "name",
          "size",
          "number"
        ]
      },
      "StorageConfigPartitionToDelete": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "const": true,
            "description": "Delete the partition."
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDeletePartitionSearch"
          }
        },
        "required": [
          "delete",
          "search"
        ],
        "type": "object"
      },
      "StorageConfigPartitionToDeleteIfNeeded": {
        "additionalProperties": false,
        "properties": {
          "deleteIfNeeded": {
            "const": true,
            "description": "Delete the partition if needed to make space."
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDeletePartitionSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          }
        },
        "required": [
          "deleteIfNeeded",
          "search"
        ],
        "type": "object"
      },
      "StorageConfigPartitionedDrive": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StorageConfigPartitionElement"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StorageConfigPtableType"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigDriveSearch"
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StorageConfigPartitionedMdRaid": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "chunkSize": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          "devices": {
            "$ref": "#/components/schemas/StorageConfigMdRaidDevices"
          },
          "level": {
            "$ref": "#/components/schemas/StorageConfigMdRaidLevel"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "parity": {
            "$ref": "#/components/schemas/StorageConfigMdRaidParity"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StorageConfigPartitionElement"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StorageConfigPtableType"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigMdRaidSearch"
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StorageConfigPartitionsCount": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "min"
            ]
          },
          {
            "required": [
              "max"
            ]
          }
        ],
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition",
            "description": "Optional condition; omit to count all partitions."
          },
          "max": {
            "description": "Maximum number of matching partitions (must be >= 1).",
            "minimum": 1,
            "type": "integer"
          },
          "min": {
            "description": "Minimum number of matching partitions (must be >= 1).",
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StorageConfigPartitionsQuantifier": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigPartitionsQuantifierAny"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionsQuantifierNone"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionsQuantifierAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigPartitionsQuantifierCount"
          }
        ],
        "description": "Matches devices whose partitions satisfy the quantifier."
      },
      "StorageConfigPartitionsQuantifierAll": {
        "additionalProperties": false,
        "properties": {
          "all": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition",
            "description": "Matches when there is at least one partition and all partitions satisfy the condition."
          }
        },
        "required": [
          "all"
        ],
        "type": "object"
      },
      "StorageConfigPartitionsQuantifierAny": {
        "additionalProperties": false,
        "properties": {
          "any": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition",
            "description": "Matches when at least one partition satisfies the condition."
          }
        },
        "required": [
          "any"
        ],
        "type": "object"
      },
      "StorageConfigPartitionsQuantifierCount": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "$ref": "#/components/schemas/StorageConfigPartitionsCount"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "StorageConfigPartitionsQuantifierNone": {
        "additionalProperties": false,
        "properties": {
          "none": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearchCondition",
            "description": "Matches when no partition satisfies the condition."
          }
        },
        "required": [
          "none"
        ],
        "type": "object"
      },
      "StorageConfigPhysicalVolumeElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSimplePhysicalVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageConfigAdvancedPhysicalVolumesGenerator"
          }
        ]
      },
      "StorageConfigPtableType": {
        "$comment": "The partition table is created only if all the current partitions are deleted.",
        "description": "Partition table type.",
        "enum": [
          "gpt",
          "msdos",
          "dasd"
        ]
      },
      "StorageConfigRegularPartition": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageConfigFilesystem"
          },
          "id": {
            "enum": [
              "linux",
              "swap",
              "lvm",
              "raid",
              "esp",
              "prep",
              "bios_boot"
            ],
            "title": "Partition id"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigPartitionSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          }
        },
        "type": "object"
      },
      "StorageConfigSearchActions": {
        "default": "error",
        "description": "How to handle the section if the device is not found.",
        "enum": [
          "skip",
          "error"
        ]
      },
      "StorageConfigSearchAll": {
        "const": "*",
        "description": "Shortcut to match all devices if there is any (equivalent to specify no conditions and to skip the entry if no device is found)."
      },
      "StorageConfigSearchConditionBoss": {
        "additionalProperties": false,
        "properties": {
          "boss": {
            "description": "Whether the device is a BOSS (Boot Optimized Storage Solution) device, a technology introduced by Dell. Use false to match any other device.",
            "type": "boolean"
          }
        },
        "required": [
          "boss"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionDriver": {
        "additionalProperties": false,
        "properties": {
          "driver": {
            "description": "Matches devices handled by the given kernel driver, as reported by hwinfo. A device can be handled by several drivers; the condition matches if any of them is the given one. Do not confuse with driver_modules, which values usually use underscore (virtio-pci vs virtio_pci) and subfix (ahci vs ahci_mod).",
            "examples": [
              "ahci",
              "sd"
            ],
            "type": "string"
          }
        },
        "required": [
          "driver"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionFilesystem": {
        "additionalProperties": false,
        "properties": {
          "filesystem": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageConfigSearchFilesystemPresence"
              },
              {
                "$ref": "#/components/schemas/StorageConfigFilesystemCondition"
              }
            ]
          }
        },
        "required": [
          "filesystem"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionName": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionPartitionId": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "$ref": "#/components/schemas/StorageConfigPartitionIdAny"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionPartitionNumber": {
        "additionalProperties": false,
        "properties": {
          "number": {
            "description": "Partition number (e.g., 1 for vda1).",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "number"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionPartitions": {
        "additionalProperties": false,
        "properties": {
          "partitions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageConfigSearchPartitionsPresence"
              },
              {
                "$ref": "#/components/schemas/StorageConfigPartitionsQuantifier"
              }
            ]
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionSize": {
        "additionalProperties": false,
        "properties": {
          "size": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageConfigSizeValue"
              },
              {
                "$ref": "#/components/schemas/StorageConfigSearchConditionSizeEqual"
              },
              {
                "$ref": "#/components/schemas/StorageConfigSearchConditionSizeGreater"
              },
              {
                "$ref": "#/components/schemas/StorageConfigSearchConditionSizeLess"
              }
            ]
          }
        },
        "required": [
          "size"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionSizeEqual": {
        "additionalProperties": false,
        "properties": {
          "equal": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          }
        },
        "required": [
          "equal"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionSizeGreater": {
        "additionalProperties": false,
        "properties": {
          "greater": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          }
        },
        "required": [
          "greater"
        ],
        "type": "object"
      },
      "StorageConfigSearchConditionSizeLess": {
        "additionalProperties": false,
        "properties": {
          "less": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          }
        },
        "required": [
          "less"
        ],
        "type": "object"
      },
      "StorageConfigSearchCreatableActions": {
        "default": "error",
        "description": "How to handle the section if the device is not found.",
        "enum": [
          "skip",
          "error",
          "create"
        ]
      },
      "StorageConfigSearchFilesystemPresence": {
        "description": "Shortcut to match by filesystem presence: \"any\" matches formatted devices, \"none\" matches unformatted ones.",
        "enum": [
          "any",
          "none"
        ]
      },
      "StorageConfigSearchMax": {
        "description": "Maximum devices to match.",
        "minimum": 1,
        "type": "integer"
      },
      "StorageConfigSearchName": {
        "description": "Search by device name",
        "examples": [
          "/dev/vda",
          "/dev/disk/by-id/ata-WDC_WD3200AAKS-75L9"
        ],
        "type": "string"
      },
      "StorageConfigSearchPartitionsPresence": {
        "description": "Shortcut to match by partitions presence: \"any\" matches devices with at least one partition, \"none\" matches devices with no partitions.",
        "enum": [
          "any",
          "none"
        ]
      },
      "StorageConfigSearchSortCriterionOrder": {
        "description": "Direction of sorting at the search results",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "StorageConfigSimplePhysicalVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the needed physical volumes in the indicated devices.",
        "properties": {
          "generate": {
            "items": {
              "$ref": "#/components/schemas/StorageConfigAlias"
            },
            "type": "array"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageConfigSimpleVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the default or mandatory volumes configured by the selected product.",
        "properties": {
          "generate": {
            "enum": [
              "default",
              "mandatory"
            ]
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageConfigSize": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          {
            "description": "Lower size limit and optionally upper size limit.",
            "examples": [
              [
                1024,
                "current"
              ],
              [
                "1 GiB",
                "5 GiB"
              ],
              [
                1024,
                "2 GiB"
              ],
              [
                "2 GiB"
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/StorageConfigSizeValueWithCurrent"
            },
            "maxItems": 2,
            "minItems": 1,
            "title": "Size tuple",
            "type": "array"
          },
          {
            "additionalProperties": false,
            "description": "Size range.",
            "properties": {
              "max": {
                "$ref": "#/components/schemas/StorageConfigSizeValueWithCurrent"
              },
              "min": {
                "$ref": "#/components/schemas/StorageConfigSizeValueWithCurrent"
              }
            },
            "required": [
              "min"
            ],
            "title": "Size range",
            "type": "object"
          }
        ],
        "title": "Size"
      },
      "StorageConfigSizeBytes": {
        "description": "Size in bytes.",
        "examples": [
          1024,
          2048
        ],
        "minimum": 0,
        "type": "integer"
      },
      "StorageConfigSizeString": {
        "description": "Human readable size.",
        "examples": [
          "2 GiB",
          "1.5 TB",
          "1TIB",
          "1073741824 b",
          "1073741824"
        ],
        "pattern": "^[0-9]+(\\.[0-9]+)?(\\s*([KkMmGgTtPpEeZzYy][iI]?)?[Bb])?$",
        "type": "string"
      },
      "StorageConfigSizeValue": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSizeString"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSizeBytes"
          }
        ]
      },
      "StorageConfigSizeValueWithCurrent": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          {
            "const": "current",
            "description": "The current size of the device.",
            "title": "Size current"
          }
        ]
      },
      "StorageConfigThinLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageConfigFilesystem"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          },
          "usedPool": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          }
        },
        "required": [
          "usedPool"
        ],
        "type": "object"
      },
      "StorageConfigThinPoolLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageConfigAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageConfigEncryption"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "pool": {
            "const": true,
            "description": "LVM thin pool."
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSize"
          },
          "stripeSize": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          "stripes": {
            "$ref": "#/components/schemas/StorageConfigLogicalVolumeStripes"
          }
        },
        "required": [
          "pool"
        ],
        "type": "object"
      },
      "StorageConfigVolumeGroup": {
        "additionalProperties": false,
        "description": "LVM volume group.",
        "properties": {
          "extentSize": {
            "$ref": "#/components/schemas/StorageConfigSizeValue"
          },
          "logicalVolumes": {
            "items": {
              "$ref": "#/components/schemas/StorageConfigLogicalVolumeElement"
            },
            "type": "array"
          },
          "name": {
            "$ref": "#/components/schemas/StorageConfigBaseName"
          },
          "physicalVolumes": {
            "description": "Devices to use as physical volumes.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigPhysicalVolumeElement"
            },
            "type": "array"
          },
          "search": {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearch"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "StorageConfigVolumeGroupAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageConfigSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageConfigSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchSort"
          }
        },
        "type": "object"
      },
      "StorageConfigVolumeGroupSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupAdvancedSearch"
          }
        ]
      },
      "StorageConfigVolumeGroupSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageConfigSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchConditionNot"
          }
        ]
      },
      "StorageConfigVolumeGroupSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageConfigVolumeGroupSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageConfigVolumeGroupSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageConfigVolumeGroupSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageConfigVolumeGroupSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageConfigVolumeGroupSearchSortCriterionFull"
          }
        ]
      },
      "StorageConfigVolumeGroupSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageConfigSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageConfigVolumeGroupSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageDevice": {
        "additionalProperties": false,
        "description": "Schema to describe a device both in 'system' and 'proposal'.",
        "properties": {
          "block": {
            "$ref": "#/components/schemas/StorageDeviceBlock"
          },
          "class": {
            "$ref": "#/components/schemas/StorageDeviceDeviceClass"
          },
          "description": {
            "type": "string"
          },
          "drive": {
            "$ref": "#/components/schemas/StorageDeviceDrive"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageDeviceFilesystem"
          },
          "logicalVolumes": {
            "items": {
              "$ref": "#/components/schemas/StorageDevice"
            },
            "type": "array"
          },
          "md": {
            "$ref": "#/components/schemas/StorageDeviceMd"
          },
          "multipath": {
            "$ref": "#/components/schemas/StorageDeviceMultipath"
          },
          "name": {
            "type": "string"
          },
          "partition": {
            "$ref": "#/components/schemas/StorageDevicePartition"
          },
          "partitionTable": {
            "$ref": "#/components/schemas/StorageDevicePartitionTable"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StorageDevice"
            },
            "type": "array"
          },
          "sid": {
            "type": "integer"
          },
          "volumeGroup": {
            "$ref": "#/components/schemas/StorageDeviceVolumeGroup"
          }
        },
        "required": [
          "sid",
          "name"
        ],
        "title": "Device",
        "type": "object"
      },
      "StorageDeviceBlock": {
        "additionalProperties": false,
        "properties": {
          "encrypted": {
            "type": "boolean"
          },
          "shrinking": {
            "$ref": "#/components/schemas/StorageDeviceShrinkInfo"
          },
          "size": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          },
          "systems": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "udevIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "udevPaths": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "start",
          "size",
          "shrinking"
        ],
        "type": "object"
      },
      "StorageDeviceDeviceClass": {
        "enum": [
          "drive",
          "mdRaid",
          "partition",
          "volumeGroup",
          "logicalVolume"
        ],
        "title": "Device class"
      },
      "StorageDeviceDrive": {
        "additionalProperties": false,
        "properties": {
          "bus": {
            "type": "string"
          },
          "busId": {
            "type": "string"
          },
          "drivers": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "info": {
            "$ref": "#/components/schemas/StorageDeviceDriveInfo"
          },
          "model": {
            "type": "string"
          },
          "transport": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/StorageDeviceDriveType"
          },
          "vendor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "StorageDeviceDriveInfo": {
        "additionalProperties": false,
        "properties": {
          "boss": {
            "type": "boolean"
          },
          "sdCard": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "StorageDeviceDriveType": {
        "enum": [
          "disk",
          "raid",
          "multipath",
          "dasd"
        ],
        "title": "Drive type"
      },
      "StorageDeviceFilesystem": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "mountPath": {
            "type": "string"
          },
          "sid": {
            "type": "integer"
          },
          "type": {
            "$ref": "#/components/schemas/StorageDeviceFilesystemType"
          }
        },
        "required": [
          "sid",
          "type"
        ],
        "type": "object"
      },
      "StorageDeviceFilesystemType": {
        "enum": [
          "bcachefs",
          "btrfs",
          "btrfsSnapshots",
          "btrfsImmutable",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ],
        "title": "Filesystem type"
      },
      "StorageDeviceMd": {
        "additionalProperties": false,
        "properties": {
          "devices": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "level": {
            "$ref": "#/components/schemas/StorageDeviceMdRaidLevel"
          },
          "uuid": {
            "type": "string"
          }
        },
        "required": [
          "level",
          "devices"
        ],
        "type": "object"
      },
      "StorageDeviceMdRaidLevel": {
        "enum": [
          "raid0",
          "raid1",
          "raid5",
          "raid6",
          "raid10"
        ],
        "title": "MD level"
      },
      "StorageDeviceMultipath": {
        "additionalProperties": false,
        "properties": {
          "wireNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "wireNames"
        ],
        "type": "object"
      },
      "StorageDevicePartition": {
        "additionalProperties": false,
        "properties": {
          "efi": {
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/StorageDevicePartitionId"
          }
        },
        "required": [
          "efi"
        ],
        "type": "object"
      },
      "StorageDevicePartitionId": {
        "enum": [
          "dos12",
          "dos16",
          "ntfs",
          "dos32",
          "extended",
          "diag",
          "prep",
          "swap",
          "linux",
          "irst",
          "lvm",
          "raid",
          "xbootldr",
          "esp",
          "bios_boot",
          "windows_basic_data",
          "microsoft_reserved",
          "linux_home",
          "linux_server_data",
          "linux_root_arm",
          "linux_root_aarch64",
          "linux_root_ppc32",
          "linux_root_ppc64be",
          "linux_root_ppc64le",
          "linux_root_riscv32",
          "linux_root_riscv64",
          "linux_root_s390",
          "linux_root_s390x",
          "linux_root_x86",
          "linux_root_x86_64",
          "linux_usr_arm",
          "linux_usr_aarch64",
          "linux_usr_ppc32",
          "linux_usr_ppc64be",
          "linux_usr_ppc64le",
          "linux_usr_riscv32",
          "linux_usr_riscv64",
          "linux_usr_s390",
          "linux_usr_s390x",
          "linux_usr_x86",
          "linux_usr_x86_64"
        ],
        "title": "Partition id"
      },
      "StorageDevicePartitionTable": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/StorageDevicePtableType"
          },
          "unusedSlots": {
            "items": {
              "$ref": "#/components/schemas/StorageDeviceUnusedSlot"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "unusedSlots"
        ],
        "type": "object"
      },
      "StorageDevicePtableType": {
        "enum": [
          "gpt",
          "msdos",
          "dasd"
        ],
        "title": "Partition table type"
      },
      "StorageDeviceShrinkInfo": {
        "additionalProperties": false,
        "properties": {
          "minSize": {
            "type": "integer"
          },
          "reasons": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "supported": {
            "type": "boolean"
          }
        },
        "required": [
          "supported"
        ],
        "type": "object"
      },
      "StorageDeviceUnusedSlot": {
        "additionalProperties": false,
        "properties": {
          "size": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          }
        },
        "required": [
          "start",
          "size"
        ],
        "type": "object"
      },
      "StorageDeviceVolumeGroup": {
        "additionalProperties": false,
        "properties": {
          "physicalVolumes": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "size": {
            "type": "integer"
          }
        },
        "required": [
          "size",
          "physicalVolumes"
        ],
        "type": "object"
      },
      "StorageModelConfig": {
        "additionalProperties": false,
        "description": "Config model",
        "properties": {
          "boot": {
            "$ref": "#/components/schemas/StorageModelConfigBoot"
          },
          "drives": {
            "items": {
              "$ref": "#/components/schemas/StorageModelConfigDrive"
            },
            "type": "array"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageModelConfigEncryption"
          },
          "mdRaids": {
            "items": {
              "$ref": "#/components/schemas/StorageModelConfigMdRaid"
            },
            "type": "array"
          },
          "volumeGroups": {
            "items": {
              "$ref": "#/components/schemas/StorageModelConfigVolumeGroup"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "StorageModelConfigBoot": {
        "additionalProperties": false,
        "properties": {
          "bootloader": {
            "$ref": "#/components/schemas/StorageModelConfigBootloaderType"
          },
          "configure": {
            "type": "boolean"
          },
          "device": {
            "$ref": "#/components/schemas/StorageModelConfigBootDevice"
          }
        },
        "required": [
          "configure"
        ],
        "type": "object"
      },
      "StorageModelConfigBootDevice": {
        "additionalProperties": false,
        "properties": {
          "default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "default"
        ],
        "type": "object"
      },
      "StorageModelConfigBootloaderType": {
        "enum": [
          "grub2",
          "grub2-bls",
          "systemd-boot"
        ]
      },
      "StorageModelConfigDrive": {
        "additionalProperties": false,
        "properties": {
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelConfigFilesystem"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StorageModelConfigPartition"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StorageModelConfigPtableType"
          },
          "spacePolicy": {
            "$ref": "#/components/schemas/StorageModelConfigSpacePolicy"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "StorageModelConfigEncryption": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "type": "string"
          },
          "tpm": {
            "type": "boolean"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "StorageModelConfigFilesystem": {
        "additionalProperties": false,
        "properties": {
          "default": {
            "type": "boolean"
          },
          "label": {
            "type": "string"
          },
          "mkfsExtraArguments": {
            "type": "string"
          },
          "mountOptions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reuse": {
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/StorageModelConfigFilesystemType"
          }
        },
        "required": [
          "default"
        ],
        "type": "object"
      },
      "StorageModelConfigFilesystemType": {
        "enum": [
          "bcachefs",
          "btrfs",
          "btrfsImmutable",
          "btrfsSnapshots",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ]
      },
      "StorageModelConfigLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "deleteIfNeeded": {
            "type": "boolean"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelConfigFilesystem"
          },
          "lvName": {
            "type": "string"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "resize": {
            "type": "boolean"
          },
          "resizeIfNeeded": {
            "type": "boolean"
          },
          "size": {
            "$ref": "#/components/schemas/StorageModelConfigSize"
          },
          "stripeSize": {
            "type": "integer"
          },
          "stripes": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StorageModelConfigMdRaid": {
        "$comment": "So far, drive and RAID are still identical. Let's reuse the definition.",
        "$ref": "#/components/schemas/StorageModelConfigDrive"
      },
      "StorageModelConfigPartition": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "deleteIfNeeded": {
            "type": "boolean"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelConfigFilesystem"
          },
          "id": {
            "$ref": "#/components/schemas/StorageModelConfigPartitionId"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "resize": {
            "type": "boolean"
          },
          "resizeIfNeeded": {
            "type": "boolean"
          },
          "size": {
            "$ref": "#/components/schemas/StorageModelConfigSize"
          }
        },
        "type": "object"
      },
      "StorageModelConfigPartitionId": {
        "enum": [
          "linux",
          "swap",
          "lvm",
          "raid",
          "esp",
          "prep",
          "bios_boot"
        ]
      },
      "StorageModelConfigPtableType": {
        "enum": [
          "gpt",
          "msdos",
          "dasd"
        ]
      },
      "StorageModelConfigSize": {
        "additionalProperties": false,
        "properties": {
          "default": {
            "type": "boolean"
          },
          "max": {
            "minimum": 0,
            "type": "integer"
          },
          "min": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "default",
          "min"
        ],
        "type": "object"
      },
      "StorageModelConfigSpacePolicy": {
        "enum": [
          "delete",
          "resize",
          "keep",
          "custom"
        ]
      },
      "StorageModelConfigVolumeGroup": {
        "additionalProperties": false,
        "properties": {
          "extentSize": {
            "type": "integer"
          },
          "logicalVolumes": {
            "items": {
              "$ref": "#/components/schemas/StorageModelConfigLogicalVolume"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "spacePolicy": {
            "$ref": "#/components/schemas/StorageModelConfigSpacePolicy"
          },
          "targetDevices": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetDevicesPolicy": {
            "enum": [
              "useNeeded",
              "useAvailable"
            ]
          },
          "vgName": {
            "type": "string"
          }
        },
        "required": [
          "vgName"
        ],
        "type": "object"
      },
      "StorageProposal": {
        "additionalProperties": false,
        "description": "API description of the storage proposal.",
        "properties": {
          "actions": {
            "description": "Sorted list of actions to execute during the commit phase.",
            "items": {
              "$ref": "#/components/schemas/StorageProposalAction"
            },
            "type": "array"
          },
          "devices": {
            "description": "Expected layout of the system after the commit phase.",
            "items": {
              "$ref": "#/components/schemas/StorageDevice"
            },
            "type": "array"
          }
        },
        "title": "Proposal",
        "type": "object"
      },
      "StorageProposalAction": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "device": {
            "type": "integer"
          },
          "resize": {
            "type": "boolean"
          },
          "subvol": {
            "type": "boolean"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "device",
          "text"
        ],
        "type": "object"
      },
      "StorageSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the system",
        "properties": {
          "availableDrives": {
            "description": "SIDs of the available drives",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "availableMdRaids": {
            "description": "SIDs of the available MD RAIDs",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "availableVolumeGroups": {
            "description": "SIDs of the available LVM volume groups",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "candidateDrives": {
            "description": "SIDs of the drives that are candidate for installation",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "candidateMdRaids": {
            "description": "SIDs of the MD RAIDs that are candidate for installation",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "devices": {
            "description": "All relevant devices on the system",
            "items": {
              "$ref": "#/components/schemas/StorageDevice"
            },
            "type": "array"
          },
          "issues": {
            "items": {
              "$ref": "#/components/schemas/StorageSystemInfoIssue"
            },
            "type": "array"
          },
          "productMountPoints": {
            "description": "Meaningful mount points for the current product",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "volumeTemplates": {
            "description": "Volumes defined by the product as templates",
            "items": {
              "$ref": "#/components/schemas/StorageSystemInfoVolume"
            },
            "type": "array"
          }
        },
        "title": "System",
        "type": "object"
      },
      "StorageSystemInfoEncryptionMethod": {
        "enum": [
          "luks2",
          "tpmFde"
        ],
        "title": "Encryption method"
      },
      "StorageSystemInfoIssue": {
        "additionalProperties": false,
        "properties": {
          "class": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "details": {
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "StorageSystemInfoVolume": {
        "additionalProperties": false,
        "properties": {
          "autoSize": {
            "type": "boolean"
          },
          "fsType": {
            "$ref": "#/components/schemas/StorageDeviceFilesystemType"
          },
          "maxSize": {
            "type": "integer"
          },
          "minSize": {
            "type": "integer"
          },
          "mountOptions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "mountPath": {
            "type": "string"
          },
          "outline": {
            "$ref": "#/components/schemas/StorageSystemInfoVolumeOutline"
          }
        },
        "required": [
          "mountPath",
          "minSize",
          "autoSize"
        ],
        "type": "object"
      },
      "StorageSystemInfoVolumeOutline": {
        "additionalProperties": false,
        "properties": {
          "adjustByRam": {
            "type": "boolean"
          },
          "fsTypes": {
            "items": {
              "$ref": "#/components/schemas/StorageDeviceFilesystemType"
            },
            "type": "array"
          },
          "required": {
            "type": "boolean"
          },
          "sizeRelevantVolumes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "snapshotsAffectSizes": {
            "type": "boolean"
          },
          "supportAutoSize": {
            "type": "boolean"
          }
        },
        "required": [
          "required",
          "supportAutoSize"
        ],
        "type": "object"
      },
      "StringOrList": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        ]
      },
      "SystemInfo": {
        "description": "Global information of the system where the installer is running.",
        "properties": {
          "bootloader": {
            "$ref": "#/components/schemas/BootloaderSystemInfo"
          },
          "dasd": {
            "$ref": "#/components/schemas/DasdSystemInfo"
          },
          "hardware": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HardwareInfo"
              }
            ],
            "description": "Hardware information"
          },
          "hostname": {
            "$ref": "#/components/schemas/hostname.SystemInfo"
          },
          "iscsi": {
            "$ref": "#/components/schemas/IscsiSystemInfo"
          },
          "l10n": {
            "$ref": "#/components/schemas/l10n.SystemInfo"
          },
          "licenses": {
            "description": "List of available licenses (in the current system language).",
            "items": {
              "$ref": "#/components/schemas/License"
            },
            "type": "array"
          },
          "network": {
            "$ref": "#/components/schemas/network.SystemInfo"
          },
          "products": {
            "description": "List of known products.",
            "items": {
              "$ref": "#/components/schemas/Product"
            },
            "type": "array"
          },
          "software": {
            "$ref": "#/components/schemas/SystemInfo2"
          },
          "storage": {
            "$ref": "#/components/schemas/StorageSystemInfo"
          },
          "zfcp": {
            "$ref": "#/components/schemas/ZfcpSystemInfo"
          }
        },
        "required": [
          "products",
          "licenses",
          "hardware",
          "hostname",
          "l10n",
          "software",
          "network"
        ],
        "type": "object"
      },
      "SystemInfo2": {
        "description": "Software-related information of the system where the installer\nis running.",
        "properties": {
          "patterns": {
            "description": "List of known patterns.",
            "items": {
              "$ref": "#/components/schemas/Pattern"
            },
            "type": "array"
          },
          "registration": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RegistrationInfo"
              },
              {
                "type": "null"
              }
            ],
            "description": "Registration information"
          }
        },
        "required": [
          "patterns"
        ],
        "type": "object"
      },
      "Task": {
        "description": "Represents a background task.",
        "properties": {
          "description": {
            "description": "Human-readable description of what the task does",
            "type": "string"
          },
          "id": {
            "description": "Id of the task",
            "format": "uint",
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "description": "Short name identifying the task (e.g., \"storage_config\")",
            "type": "string"
          },
          "scope": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Scope"
              }
            ],
            "description": "Scope that originated the task"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "scope"
        ],
        "type": "object"
      },
      "TimezoneEntry": {
        "description": "Represents a timezone, including each part as localized.",
        "properties": {
          "country": {
            "description": "Localized name of the territory this timezone is associated to",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TimezoneId"
              }
            ],
            "description": "Timezone identifier (e.g. \"Atlantic/Canary\")."
          },
          "parts": {
            "description": "Localized parts (e.g., \"Atlántico\", \"Canarias\").",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "parts"
        ],
        "type": "object"
      },
      "TimezoneId": {
        "type": "string"
      },
      "UpdateQuestion": {
        "description": "Represents an update operation over the list of questions.\n\nIt is used by the HTTP layer only.",
        "oneOf": [
          {
            "additionalProperties": false,
            "description": "Answer the question with the given answer.",
            "properties": {
              "answer": {
                "description": "Question answer.\n\nIt includes the action and, optionally, and additional value which depends\non the question field.",
                "properties": {
                  "action": {
                    "description": "Action to use for answering the question.",
                    "type": "string"
                  },
                  "id": {
                    "format": "uint32",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "value": {
                    "description": "Value to use for the question (e.g. password or string input, depending on the question type).",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "id",
                  "action"
                ],
                "title": "Predefined question action",
                "type": "object"
              }
            },
            "required": [
              "answer"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "description": "Remove the question.",
            "properties": {
              "delete": {
                "properties": {
                  "id": {
                    "format": "uint32",
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              }
            },
            "required": [
              "delete"
            ],
            "type": "object"
          }
        ]
      },
      "UserFile": {
        "anyOf": [
          {
            "description": "File or script content, starting with a shebang for scripts.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "Absolute or relative URL to fetch the file or script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents individual settings for single file deployment",
        "properties": {
          "destination": {
            "description": "Destination path where file should be deployed (e.g., \"/etc/config.d/my.conf\").",
            "type": "string"
          },
          "group": {
            "default": "root",
            "description": "Group owning the file on installed system. The group has to already exist.",
            "type": "string"
          },
          "permissions": {
            "default": "0644",
            "description": "Permissions for file on installed system (e.g., \"0644\").",
            "type": "string"
          },
          "user": {
            "default": "root",
            "description": "User owning the file on installed system. The user has to already exist.",
            "type": "string"
          }
        },
        "required": [
          "destination"
        ],
        "title": "User-defined file to deploy",
        "type": "object"
      },
      "VlanFlag": {
        "description": "VLAN flags controlling behavior",
        "oneOf": [
          {
            "const": "reorder-headers",
            "description": "Reorder Ethernet headers to make packets look less like VLAN packets",
            "type": "string"
          },
          {
            "const": "gvrp",
            "description": "GARP VLAN Registration Protocol - dynamically register/deregister VLANs",
            "type": "string"
          },
          {
            "const": "loose-binding",
            "description": "Allow changing master device while connection is active",
            "type": "string"
          },
          {
            "const": "mvrp",
            "description": "Multiple VLAN Registration Protocol - next generation of GVRP",
            "type": "string"
          }
        ]
      },
      "VlanSettings": {
        "properties": {
          "flags": {
            "items": {
              "$ref": "#/components/schemas/VlanFlag"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "id": {
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "parent": {
            "type": "string"
          },
          "protocol": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "parent",
          "id"
        ],
        "type": "object"
      },
      "WirelessSettings": {
        "description": "Wireless configuration",
        "properties": {
          "band": {
            "description": "Frequency band of the wireless network",
            "type": [
              "string",
              "null"
            ]
          },
          "bssid": {
            "description": "Only allow connection to this mac address",
            "type": [
              "string",
              "null"
            ]
          },
          "channel": {
            "description": "Wireless channel of the wireless network",
            "format": "uint32",
            "minimum": 0,
            "type": "integer"
          },
          "groupAlgorithms": {
            "description": "A list of group/broadcast encryption algorithms",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hidden": {
            "description": "Indicates that the wireless network is not broadcasting its SSID",
            "type": "boolean"
          },
          "mode": {
            "description": "Wireless network mode",
            "type": "string"
          },
          "pairwiseAlgorithms": {
            "description": "A list of pairwise encryption algorithms",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "password": {
            "description": "Password of the wireless network",
            "type": [
              "string",
              "null"
            ]
          },
          "pmf": {
            "description": "Indicates whether Protected Management Frames must be enabled for the connection",
            "format": "int32",
            "type": "integer"
          },
          "security": {
            "description": "Security method/key management",
            "type": "string"
          },
          "ssid": {
            "description": "SSID of the wireless network",
            "type": "string"
          },
          "wpaProtocolVersions": {
            "description": "A list of allowed WPA protocol versions",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "security",
          "ssid",
          "mode"
        ],
        "type": "object"
      },
      "ZfcpConfig": {
        "additionalProperties": false,
        "description": "zFCP config.",
        "properties": {
          "controllers": {
            "description": "List of zFCP controllers.",
            "items": {
              "description": "zFCP controller channel id.",
              "type": "string"
            },
            "type": "array"
          },
          "devices": {
            "description": "List of zFCP devices.",
            "items": {
              "$ref": "#/components/schemas/ZfcpConfigDevice"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "ZfcpConfigDevice": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "default": true,
            "description": "Whether to activate the device.",
            "type": "boolean"
          },
          "channel": {
            "description": "zFCP controller channel id.",
            "examples": [
              "0.0.fa00"
            ],
            "type": "string"
          },
          "lun": {
            "description": "LUN of the SCSI device.",
            "examples": [
              "0x4010403300000000"
            ],
            "type": "string"
          },
          "wwpn": {
            "description": "WWPN of the target port.",
            "examples": [
              "0x500507630300c562"
            ],
            "type": "string"
          }
        },
        "required": [
          "channel",
          "wwpn",
          "lun"
        ],
        "type": "object"
      },
      "ZfcpSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the zFCP system",
        "properties": {
          "controllers": {
            "description": "zFCP controllers",
            "items": {
              "$ref": "#/components/schemas/ZfcpSystemInfoController"
            },
            "type": "array"
          },
          "devices": {
            "description": "zFCP devices",
            "items": {
              "$ref": "#/components/schemas/ZfcpSystemInfoDevice"
            },
            "type": "array"
          },
          "lunScan": {
            "description": "Whether automatic LUN scan is active in the system.",
            "type": "boolean"
          }
        },
        "required": [
          "lunScan",
          "controllers",
          "devices"
        ],
        "title": "System",
        "type": "object"
      },
      "ZfcpSystemInfoController": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "type": "boolean"
          },
          "channel": {
            "type": "string"
          },
          "lunScan": {
            "description": "Whether the controller automatically scans LUNs.",
            "type": "boolean"
          },
          "wwpns": {
            "description": "All available WWPNs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "channel",
          "wwpns",
          "lunScan",
          "active"
        ],
        "type": "object"
      },
      "ZfcpSystemInfoDevice": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "type": "boolean"
          },
          "channel": {
            "type": "string"
          },
          "deviceName": {
            "description": "Device name assigned by the kernel once it is active.",
            "type": "string"
          },
          "lun": {
            "type": "string"
          },
          "wwpn": {
            "type": "string"
          }
        },
        "required": [
          "channel",
          "wwpn",
          "lun",
          "active"
        ],
        "type": "object"
      },
      "access.Config": {
        "description": "Remote Access configuration.\n\nAllows to explicitly specify how machine has to be accessed after installation.",
        "properties": {
          "ssh": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Allows to specify if ssh access has to be enabled after installation or keep product defaults."
          },
          "webConsole": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Allows to specify if web console access has to be enabled after installation or keep product defaults."
          }
        },
        "type": "object"
      },
      "access.ExtendedConfig": {
        "description": "Remote Access extended configuration that is resolved",
        "properties": {
          "ssh": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              }
            ],
            "description": "Remote access to SSH"
          },
          "webConsole": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              }
            ],
            "description": "Remote access to Web Console"
          }
        },
        "required": [
          "ssh",
          "webConsole"
        ],
        "type": "object"
      },
      "bootloader.Config": {
        "description": "Bootloader configuration.",
        "properties": {
          "extraKernelParams": {
            "description": "Bootloader extra kernel parameters.",
            "type": [
              "string",
              "null"
            ]
          },
          "stopOnBootMenu": {
            "description": "Whether bootloader should stop on boot menu.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "timeout": {
            "description": "Bootloader timeout.",
            "format": "uint32",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "updateNvram": {
            "description": "Whether bootloader should update persistent RAM.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "title": "Bootloader settings",
        "type": "object"
      },
      "hostname.Config": {
        "description": "Hostname config.",
        "properties": {
          "hostname": {
            "description": "System transient hostname.",
            "examples": [
              "agama-host"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "static": {
            "description": "System static hostname.",
            "examples": [
              "agama-host.example.com"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "transient": {
            "deprecated": true,
            "description": "System transient hostname.",
            "examples": [
              "agama-host"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "Hostname settings",
        "type": "object"
      },
      "hostname.Proposal": {
        "description": "Describes what Agama proposes for the target system.",
        "properties": {
          "hostname": {
            "type": "string"
          },
          "static": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "hostname"
        ],
        "type": "object"
      },
      "hostname.SystemInfo": {
        "description": "Describes the current system hostname information",
        "properties": {
          "hostname": {
            "type": "string"
          },
          "static": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "hostname"
        ],
        "type": "object"
      },
      "l10n.Config": {
        "description": "Localization config.",
        "properties": {
          "keyboard": {
            "deprecated": true,
            "description": "Keymap (e.g., \"us\", \"cz(qwerty)\", etc.).",
            "examples": [
              "us",
              "en",
              "es"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "keymap": {
            "description": "Keymap (e.g., \"us\", \"cz(qwerty)\", etc.).",
            "examples": [
              "us",
              "en",
              "es"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "deprecated": true,
            "description": "Locale (e.g., \"en_US.UTF-8\").",
            "examples": [
              "en_US.UTF-8",
              "en_US"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "locale": {
            "description": "Locale (e.g., \"en_US.UTF-8\").",
            "examples": [
              "en_US.UTF-8",
              "en_US"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "timezone": {
            "description": "Timezone (e.g., \"Europe/Berlin\").",
            "examples": [
              "Europe/Berlin"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "Localization settings",
        "type": "object"
      },
      "l10n.Proposal": {
        "description": "Describes what Agama proposes for the target system.",
        "properties": {
          "keymap": {
            "description": "Keymap (e.g., \"us\", \"cz(qwerty)\", etc.).",
            "type": "string"
          },
          "locale": {
            "description": "Locale (e.g., \"en_US.UTF-8\").",
            "type": "string"
          },
          "timezone": {
            "description": "Timezone (e.g., \"Europe/Berlin\").",
            "type": "string"
          }
        },
        "required": [
          "keymap",
          "locale",
          "timezone"
        ],
        "type": "object"
      },
      "l10n.SystemConfig": {
        "properties": {
          "keymap": {
            "type": [
              "string",
              "null"
            ]
          },
          "locale": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "l10n.SystemInfo": {
        "description": "Localization-related information of the system where the installer is running.",
        "properties": {
          "keymap": {
            "description": "Keymap of the system where Agama is running.",
            "type": "string"
          },
          "keymaps": {
            "description": "List of known keymaps.",
            "items": {
              "$ref": "#/components/schemas/Keymap"
            },
            "type": "array"
          },
          "locale": {
            "description": "Locale of the system where Agama is running.",
            "type": "string"
          },
          "locales": {
            "description": "List of know locales.",
            "items": {
              "$ref": "#/components/schemas/LocaleEntry"
            },
            "type": "array"
          },
          "timezone": {
            "description": "Timezone of the system where Agama is running.",
            "type": "string"
          },
          "timezones": {
            "description": "List of known timezones.",
            "items": {
              "$ref": "#/components/schemas/TimezoneEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "locales",
          "timezones",
          "keymaps",
          "locale",
          "keymap",
          "timezone"
        ],
        "type": "object"
      },
      "network.Config": {
        "description": "Network config settings for installation",
        "properties": {
          "connections": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NetworkConnectionsCollection"
              },
              {
                "type": "null"
              }
            ],
            "description": "Connections to use in the installation"
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StateSettings"
              },
              {
                "type": "null"
              }
            ],
            "description": "Network general settings"
          }
        },
        "type": "object"
      },
      "network.Proposal": {
        "description": "Network proposal settings for installation",
        "properties": {
          "connections": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkConnectionsCollection"
              }
            ],
            "description": "Connections to use in the installation"
          },
          "state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StateSettings"
              }
            ],
            "description": "General network settings"
          }
        },
        "required": [
          "connections",
          "state"
        ],
        "type": "object"
      },
      "network.SystemInfo": {
        "description": "Network settings for installation",
        "properties": {
          "accessPoints": {
            "items": {
              "$ref": "#/components/schemas/AccessPoint"
            },
            "type": "array"
          },
          "connections": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkConnectionsWithStateCollection"
              }
            ],
            "description": "Connections to use in the installation"
          },
          "devices": {
            "items": {
              "$ref": "#/components/schemas/Device"
            },
            "type": "array"
          },
          "state": {
            "$ref": "#/components/schemas/StateSettings"
          }
        },
        "required": [
          "accessPoints",
          "connections",
          "devices",
          "state"
        ],
        "type": "object"
      },
      "ntp.Config": {
        "description": "NTP configuration.",
        "properties": {
          "sources": {
            "description": "NTP sources.",
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "title": "NTP configuration",
        "type": "object"
      },
      "proxy.Config": {
        "description": "Proxy config.",
        "properties": {
          "enabled": {
            "description": "Whether proxy is enabled.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "ftp": {
            "description": "URL to be used for the FTP proxy.",
            "type": [
              "string",
              "null"
            ]
          },
          "gopher": {
            "description": "URL to be used for the Gopher proxy.",
            "type": [
              "string",
              "null"
            ]
          },
          "http": {
            "description": "URL to be used for the HTTP proxy.",
            "examples": [
              "http://proxy.provider.de:3128/"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "https": {
            "description": "URL to be used for the HTTPS proxy.",
            "type": [
              "string",
              "null"
            ]
          },
          "noProxy": {
            "description": "Comma-separated list of domains/hosts to bypass proxy for.",
            "type": [
              "string",
              "null"
            ]
          },
          "socks": {
            "description": "URL to be used for the SOCKS proxy.",
            "type": [
              "string",
              "null"
            ]
          },
          "socks5": {
            "description": "SOCKS5 server address.",
            "examples": [
              "office-proxy.example.com:8881"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "Proxy settings",
        "type": "object"
      },
      "questions.Action": {
        "description": "Question action.\n\nThey are usually presented as the button in a form.",
        "properties": {
          "id": {
            "description": "Action value.",
            "type": "string"
          },
          "label": {
            "description": "Description of the action.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ],
        "type": "object"
      },
      "questions.Answer": {
        "description": "Question answer.\n\nIt includes the action and, optionally, and additional value which depends\non the question field.",
        "properties": {
          "action": {
            "description": "Action to use for answering the question.",
            "type": "string"
          },
          "value": {
            "description": "Value to use for the question (e.g. password or string input, depending on the question type).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "action"
        ],
        "title": "Predefined question action",
        "type": "object"
      },
      "questions.Config": {
        "description": "Questions configuration.",
        "properties": {
          "answers": {
            "description": "List of answers to automatically use for matching questions.",
            "items": {
              "$ref": "#/components/schemas/AnswerRule"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Policy"
              },
              {
                "type": "null"
              }
            ],
            "description": "Policy to answer questions: \"auto\" to automatically answer questions or \"user\" to ask the user."
          }
        },
        "title": "How to handle Agama questions",
        "type": "object"
      },
      "security.Config": {
        "description": "Security settings",
        "properties": {
          "sslCertificates": {
            "description": "List of SSL certificates to add to the system.",
            "items": {
              "$ref": "#/components/schemas/SSLFingerprint"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "title": "Security settings",
        "type": "object"
      },
      "software.Proposal": {
        "description": "Describes what Agama proposes for the target system.",
        "properties": {
          "patterns": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SelectedBy"
            },
            "description": "Patterns selection. It is represented as a hash map where the key is the pattern's name\nand the value why the pattern is selected.",
            "type": "object"
          },
          "registration": {
            "description": "Registration proposal. Maybe same as config?\nTODO: implement it",
            "type": "null"
          },
          "usedSpace": {
            "description": "Space required for installation in KiB.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "users.Config": {
        "description": "User settings\n\nHolds the user settings for the installation.",
        "properties": {
          "root": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RootUserConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FirstUserConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "bearerFormat": "JWT",
        "description": "JWT token obtained from the authentication endpoint",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "externalDocs": {
    "description": "Full Agama documentation",
    "url": "https://agama-project.github.io"
  },
  "info": {
    "contact": {
      "email": "agama-devel@lists.opensuse.org",
      "name": "Agama Project Team",
      "url": "https://github.com/agama-project/agama"
    },
    "description": "Complete HTTP API for the Agama installer. See https://agama-project.github.io for more information.",
    "license": {
      "name": "GPL-2.0",
      "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
    },
    "title": "Agama HTTP API",
    "version": "0.1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/action": {
      "post": {
        "description": "Executes an installation action such as starting the installation process or probing hardware. Some actions may be blocked if there are pending issues or if the system is busy.",
        "operationId": "executeAction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Action"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "no content"
          },
          "400": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Failed to parse the request body as JSON"
          },
          "415": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Expected request with `Content-Type: application/json`"
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Action blocked by backend state (e.g., pending issues or system busy)"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Execute action",
        "tags": [
          "Actions"
        ]
      }
    },
    "/api/auth": {
      "delete": {
        "description": "Invalidates the current session by clearing the authentication cookie. After logout, the token should no longer be used for authenticated requests.",
        "operationId": "logout",
        "responses": {
          "200": {
            "description": "no content"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized - invalid or missing token"
          }
        },
        "summary": "End user session",
        "tags": [
          "Authentication"
        ]
      },
      "get": {
        "description": "Verifies that the current authentication token is valid. Returns 200 if the user is authenticated, 401 otherwise. Use this endpoint to check if a session is still active.",
        "operationId": "checkSession",
        "responses": {
          "200": {
            "description": "no content"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized - invalid or missing token"
          }
        },
        "summary": "Check session status",
        "tags": [
          "Authentication"
        ]
      },
      "post": {
        "description": "Authenticates the user with the provided password and returns a JWT bearer token. The token should be included in the Authorization header for subsequent requests. Also sets an HttpOnly session cookie for browser-based clients.",
        "operationId": "login",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            },
            "description": "Authentication successful, returns bearer token"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Authentication failed - invalid credentials"
          }
        },
        "security": [],
        "summary": "Authenticate user",
        "tags": [
          "Authentication"
        ]
      }
    },
    "/api/config": {
      "get": {
        "description": "Returns the current user-defined configuration.",
        "operationId": "getConfiguration",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Config"
                }
              }
            },
            "description": "Configuration retrieved successfully"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get configuration",
        "tags": [
          "Configuration"
        ]
      },
      "patch": {
        "description": "Partially updates the configuration. Only the specified fields will be changed, all other fields remain unchanged. This is the preferred method for making incremental configuration changes.",
        "operationId": "patchConfiguration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Patch"
              }
            }
          },
          "description": "Patch for the config.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "no content"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Invalid configuration schema or malformed JSON"
          },
          "415": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Expected request with `Content-Type: application/json`"
          },
          "422": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Failed to deserialize the JSON body into the target type"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Patch configuration",
        "tags": [
          "Configuration"
        ]
      },
      "put": {
        "description": "Replaces the entire configuration. Any fields not included in the request will be removed from the configuration. For partial updates, use PATCH instead. The request body should be a JSON object conforming to the Config schema.",
        "operationId": "updateConfiguration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Config"
              }
            }
          },
          "description": "Profile definition for automated installation.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "no content"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Invalid configuration schema or malformed JSON"
          },
          "415": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Expected request with `Content-Type: application/json`"
          },
          "422": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Failed to deserialize the JSON body into the target type"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update configuration",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/extended_config": {
      "get": {
        "description": "Returns the extended configuration including computed defaults and system-generated values. Use this endpoint to see the complete configuration including values not explicitly set by the user.",
        "operationId": "getExtendedConfiguration",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Config"
                }
              }
            },
            "description": "Extended configuration retrieved successfully"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get extended configuration",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/issues": {
      "get": {
        "description": "Returns the list of all current issues detected during the installation process. Issues represent problems or warnings that may need to be addressed before proceeding with the installation.",
        "operationId": "listIssues",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/IssueWithScope"
                  },
                  "type": "array"
                }
              }
            },
            "description": "List of issues with their scopes"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "List issues",
        "tags": [
          "Issues & Questions"
        ]
      }
    },
    "/api/licenses/{id}": {
      "get": {
        "description": "Returns the content of a specific license. The license is always returned in the current system language (see the ConfigureL10n action).",
        "operationId": "getLicenseById",
        "parameters": [
          {
            "description": "License identifier (e.g., \"license.final\")",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "License identifier (e.g., \"license.final\")",
              "type": "string"
            },
            "style": "simple"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseContent"
                }
              }
            },
            "description": "License retrieved successfully"
          },
          "404": {
            "description": "no content"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get license by ID",
        "tags": [
          "System & Monitoring"
        ]
      }
    },
    "/api/proposal": {
      "get": {
        "description": "Returns the proposed configuration for the target system. The proposal is generated based on the current configuration and represents how the system will be configured when installed.",
        "operationId": "getInstallationProposal",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Proposal"
                }
              }
            },
            "description": "Proposal successfully retrieved"
          },
          "404": {
            "description": "no content"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get installation proposal",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/questions": {
      "get": {
        "description": "Returns all pending questions that require user input. Questions represent interactive prompts where the installer needs additional information or decisions from the user.",
        "operationId": "listQuestions",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Question"
                  },
                  "type": "array"
                }
              }
            },
            "description": "List of pending questions"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "List questions",
        "tags": [
          "Issues & Questions"
        ]
      },
      "patch": {
        "description": "Updates the question collection by answering or removing a question. Use this endpoint to provide an answer to a pending question or to dismiss it.",
        "operationId": "updateQuestion",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateQuestion"
              }
            }
          },
          "description": "Represents an update operation over the list of questions.\n\nIt is used by the HTTP layer only.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "no content"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Malformed JSON"
          },
          "415": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Expected request with `Content-Type: application/json`"
          },
          "422": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Failed to deserialize the JSON body into the target type"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update question",
        "tags": [
          "Issues & Questions"
        ]
      },
      "post": {
        "description": "Registers a new question for user interaction. The question will be added to the list of pending questions and can be answered or deleted later.",
        "operationId": "createQuestion",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuestionSpec"
              }
            }
          },
          "description": "Defines how a question should look like.\n\nA question is composed by a set of actions and, optionally, and additional\nfield. For instance, a question to decrypt a device using a password would have:\n\n* a pair of actions, \"decrypt\" and \"skip\".\n* a password field.\n\nIn other cases, like a simple \"yes/no\" questions, the field would not be needed.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Question"
                }
              }
            },
            "description": "Question created successfully"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Malformed JSON"
          },
          "415": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Expected request with `Content-Type: application/json`"
          },
          "422": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Failed to deserialize the JSON body into the target type"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Create question",
        "tags": [
          "Issues & Questions"
        ]
      }
    },
    "/api/status": {
      "get": {
        "description": "Returns the current status of the installation process, including the current stage and the progress of the ongoing actions. This endpoint can be polled to monitor installation progress.",
        "operationId": "getInstallerStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "description": "Status of the installation"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get installer status",
        "tags": [
          "System & Monitoring"
        ]
      }
    },
    "/api/system": {
      "get": {
        "description": "Returns detailed information about the installation system including hardware details, platform information, and system capabilities. It includes Agama specific information like the list of available products for installation.",
        "operationId": "getSystemInfo",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemInfo"
                }
              }
            },
            "description": "System information retrieved successfully"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get system information",
        "tags": [
          "System & Monitoring"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "description": "Agama instance URL",
      "url": "{agamaUrl}",
      "variables": {
        "agamaUrl": {
          "default": "https://agama.local",
          "description": "URL of the Agama instance"
        }
      }
    }
  ],
  "tags": [
    {
      "description": "User authentication and session management",
      "name": "Authentication"
    },
    {
      "description": "System information, installation status, and progress monitoring",
      "name": "System & Monitoring"
    },
    {
      "description": "System configuration management",
      "name": "Configuration"
    },
    {
      "description": "Installation actions and commands",
      "name": "Actions"
    },
    {
      "description": "Problem tracking and interactive questions",
      "name": "Issues & Questions"
    }
  ]
}