{
  "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": {
            "type": "string"
          },
          "registrationCode": {
            "description": "Free extensions do not require a registration code",
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "description": "Optional version of the addon, if not specified the version is found\nfrom the available addons",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id"
        ],
        "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": {
            "type": "string"
          },
          "class": {
            "description": "Question class (see [QuestionSpec::class]).",
            "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": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "action"
        ],
        "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"
      },
      "BootloaderBootloader": {
        "additionalProperties": false,
        "properties": {
          "encryptionAuth": {
            "description": "Encryption authentication methods that can be managed by the bootloader in this system.",
            "items": {
              "$ref": "#/components/schemas/BootloaderEncryptionAuthMethod"
            },
            "type": "array"
          },
          "type": {
            "$ref": "#/components/schemas/BootloaderBootloaderType"
          }
        },
        "required": [
          "type",
          "encryptionAuth"
        ],
        "type": "object"
      },
      "BootloaderBootloaderType": {
        "enum": [
          "grub2",
          "grub2-bls",
          "systemd-boot"
        ]
      },
      "BootloaderEncryptionAuthMethod": {
        "enum": [
          "password",
          "tpm"
        ]
      },
      "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/BootloaderBootloader"
            },
            "type": "array"
          }
        },
        "required": [
          "availableBootloaders"
        ],
        "title": "System",
        "type": "object"
      },
      "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": {
        "description": "User configuration for the localization of the target system.\n\nThis configuration is provided by the user, so all the values are optional.",
        "properties": {
          "access": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/access.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "bootloader": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/bootloader.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "dasd": {
            "description": "Configuration of the DASD devices."
          },
          "files": {
            "items": {
              "$ref": "#/components/schemas/UserFile"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "hostname": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/hostname.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "iscsi": true,
          "l10n": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/l10n.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "legacyAutoyastStorage": true,
          "network": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/network.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "ntp": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ntp.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "product": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Product related configuration"
          },
          "proxy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/proxy.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "questions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/questions.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "root": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RootUserConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "scripts": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScriptsConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "security": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/security.Config"
              },
              {
                "type": "null"
              }
            ]
          },
          "software": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SoftwareConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Software related configuration"
          },
          "storage": true,
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FirstUserConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "zfcp": {
            "description": "Configuration of the zFCP devices."
          }
        },
        "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/DasdDevice"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "DasdDevice": {
        "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"
      },
      "DasdSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the DASD system",
        "properties": {
          "devices": {
            "description": "DASD devices",
            "items": {
              "$ref": "#/components/schemas/DasdDevice"
            },
            "type": "array"
          }
        },
        "required": [
          "devices"
        ],
        "title": "System",
        "type": "object"
      },
      "DesktopSelection": {
        "description": "Desktop selection mode for a product",
        "enum": [
          "optional",
          "suggested"
        ],
        "type": "string"
      },
      "Device": {
        "description": "Network device",
        "properties": {
          "connection": {
            "type": [
              "string",
              "null"
            ]
          },
          "ipConfig": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IpConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "macAddress": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "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",
            "type": [
              "string",
              "null"
            ]
          },
          "hashedPassword": {
            "default": false,
            "description": "Whether the password is hashed or is plain text",
            "type": "boolean"
          },
          "password": {
            "description": "User password",
            "type": "string"
          },
          "sshPublicKeys": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ]
          },
          "userName": {
            "description": "First user's username",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "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 content.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "URI or relative reference to get the 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": {
            "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"
      },
      "IscsiAuthentication": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "type": "object"
      },
      "IscsiConfig": {
        "additionalProperties": false,
        "description": "iSCSI config.",
        "properties": {
          "initiator": {
            "description": "Initiator name.",
            "type": "string"
          },
          "targets": {
            "description": "List of targets.",
            "items": {
              "$ref": "#/components/schemas/IscsiTarget"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "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/IscsiTarget"
            },
            "type": "array"
          }
        },
        "required": [
          "initiator",
          "targets"
        ],
        "title": "System",
        "type": "object"
      },
      "IscsiTarget": {
        "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",
          "ibtf",
          "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": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IpInet"
              }
            ],
            "description": "List of assigned IP addresses"
          },
          "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",
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "gateway6": {
            "description": "Gateway IP address for the IPv6 connection",
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Unique identifier for the network connection",
            "type": "string"
          },
          "ieee-8021x": {
            "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": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IpInet"
              }
            ],
            "description": "List of assigned IP addresses"
          },
          "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",
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "gateway6": {
            "description": "Gateway IP address for the IPv6 connection",
            "format": "ip",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Unique identifier for the network connection",
            "type": "string"
          },
          "ieee-8021x": {
            "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": [
          {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          {
            "$ref": "#/components/schemas/PatternsMap"
          }
        ]
      },
      "PatternsMap": {
        "properties": {
          "add": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "remove": {
            "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 content.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "URI or relative reference to get the script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs after partitioning.",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PostScript": {
        "anyOf": [
          {
            "description": "File content.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "URI or relative reference to get the 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": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PreScript": {
        "anyOf": [
          {
            "description": "File content.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "URI or relative reference to get the script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents a script that runs before the installation starts.",
        "properties": {
          "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"
          }
        ]
      },
      "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., \"ALP\", \"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": {
        "description": "Software settings for installation",
        "properties": {
          "addons": {
            "items": {
              "$ref": "#/components/schemas/AddonConfig"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "id": {
            "description": "ID of the product to install (e.g., \"ALP\", \"Tumbleweed\", etc.)",
            "type": [
              "string",
              "null"
            ]
          },
          "mode": {
            "type": [
              "string",
              "null"
            ]
          },
          "registrationCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "registrationEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "registrationUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "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": true,
          "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",
            "type": "string"
          },
          "sshPublicKeys": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StringOrList"
              },
              {
                "type": "null"
              }
            ],
            "description": "Root SSH public key"
          }
        },
        "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\"",
            "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"
            ]
          }
        },
        "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.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "patterns": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PatternsConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "List of user selected patterns to install."
          }
        },
        "type": "object"
      },
      "Source": {
        "description": "NTP source configuration.",
        "properties": {
          "address": {
            "type": "string"
          },
          "iburst": {
            "default": false,
            "type": "boolean"
          },
          "offline": {
            "default": false,
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/SourceType"
          }
        },
        "required": [
          "type",
          "address"
        ],
        "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"
      },
      "StorageAction": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "device": {
            "type": "integer"
          },
          "resize": {
            "type": "boolean"
          },
          "subvol": {
            "type": "boolean"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "device",
          "text"
        ],
        "type": "object"
      },
      "StorageAdvancedLogicalVolumesGenerator": {
        "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/StorageEncryption"
              },
              "logicalVolumes": {
                "enum": [
                  "default",
                  "mandatory"
                ]
              },
              "stripeSize": {
                "$ref": "#/components/schemas/StorageSizeValue"
              },
              "stripes": {
                "$ref": "#/components/schemas/StorageLogicalVolumeStripes"
              }
            },
            "required": [
              "logicalVolumes"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageAdvancedPartitionsGenerator": {
        "additionalProperties": false,
        "description": "Creates the default or mandatory partitions configured by the selected product.",
        "properties": {
          "generate": {
            "additionalProperties": false,
            "properties": {
              "encryption": {
                "$ref": "#/components/schemas/StorageEncryption"
              },
              "partitions": {
                "enum": [
                  "default",
                  "mandatory"
                ]
              }
            },
            "required": [
              "partitions"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageAdvancedPhysicalVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the needed physical volumes in the indicated devices.",
        "properties": {
          "generate": {
            "additionalProperties": false,
            "properties": {
              "encryption": {
                "$ref": "#/components/schemas/StorageEncryption"
              },
              "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/StorageAlias"
                },
                "type": "array"
              }
            },
            "required": [
              "targetDevices"
            ],
            "type": "object"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageAlias": {
        "description": "Alias used to reference a device.",
        "type": "string"
      },
      "StorageBaseName": {
        "description": "Device base name.",
        "examples": [
          "system"
        ],
        "pattern": "^[^/]+$",
        "type": "string"
      },
      "StorageBlock": {
        "additionalProperties": false,
        "properties": {
          "encrypted": {
            "type": "boolean"
          },
          "shrinking": {
            "$ref": "#/components/schemas/StorageShrinkInfo"
          },
          "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"
      },
      "StorageBoot": {
        "additionalProperties": false,
        "description": "Allows configuring boot partitions automatically.",
        "properties": {
          "configure": {
            "description": "Whether to configure partitions for booting.",
            "type": "boolean"
          },
          "device": {
            "$ref": "#/components/schemas/StorageAlias"
          }
        },
        "required": [
          "configure"
        ],
        "type": "object"
      },
      "StorageConfig": {
        "$comment": "Based on doc/auto_storage.md",
        "additionalProperties": false,
        "description": "Storage config.",
        "properties": {
          "boot": {
            "$ref": "#/components/schemas/StorageBoot"
          },
          "drives": {
            "description": "Drives (disks, BIOS RAIDs and multipath devices).",
            "items": {
              "$ref": "#/components/schemas/StorageDriveElement"
            },
            "type": "array"
          },
          "mdRaids": {
            "description": "MD RAIDs.",
            "items": {
              "$ref": "#/components/schemas/StorageMdRaidElement"
            },
            "type": "array"
          },
          "volumeGroups": {
            "description": "LVM volume groups.",
            "items": {
              "$ref": "#/components/schemas/StorageVolumeGroup"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "StorageDeleteLogicalVolumeAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchSort"
          }
        },
        "type": "object"
      },
      "StorageDeleteLogicalVolumeSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageDeleteLogicalVolumeAdvancedSearch"
          }
        ]
      },
      "StorageDeletePartitionAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StoragePartitionSearchSort"
          }
        },
        "type": "object"
      },
      "StorageDeletePartitionSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageDeletePartitionAdvancedSearch"
          }
        ]
      },
      "StorageDevice": {
        "additionalProperties": false,
        "description": "Schema to describe a device both in 'system' and 'proposal'.",
        "properties": {
          "block": {
            "$ref": "#/components/schemas/StorageBlock"
          },
          "class": {
            "$ref": "#/components/schemas/StorageDeviceClass"
          },
          "description": {
            "type": "string"
          },
          "drive": {
            "$ref": "#/components/schemas/StorageDrive"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "logicalVolumes": {
            "items": {
              "$ref": "#"
            },
            "type": "array"
          },
          "md": {
            "$ref": "#/components/schemas/StorageMd"
          },
          "multipath": {
            "$ref": "#/components/schemas/StorageMultipath"
          },
          "name": {
            "type": "string"
          },
          "partition": {
            "$ref": "#/components/schemas/StoragePartition"
          },
          "partitionTable": {
            "$ref": "#/components/schemas/StoragePartitionTable"
          },
          "partitions": {
            "items": {
              "$ref": "#"
            },
            "type": "array"
          },
          "sid": {
            "type": "integer"
          },
          "volumeGroup": {
            "$ref": "#/components/schemas/StorageVolumeGroup"
          }
        },
        "required": [
          "sid",
          "name"
        ],
        "title": "Device",
        "type": "object"
      },
      "StorageDeviceClass": {
        "enum": [
          "drive",
          "mdRaid",
          "partition",
          "volumeGroup",
          "logicalVolume"
        ],
        "title": "Device class"
      },
      "StorageDrive": {
        "additionalProperties": false,
        "properties": {
          "bus": {
            "type": "string"
          },
          "busId": {
            "type": "string"
          },
          "drivers": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "info": {
            "$ref": "#/components/schemas/StorageDriveInfo"
          },
          "model": {
            "type": "string"
          },
          "transport": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/StorageDriveType"
          },
          "vendor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "StorageDriveAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageDriveSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageDriveSearchSort"
          }
        },
        "type": "object"
      },
      "StorageDriveElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageNonPartitionedDrive"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionedDrive"
          }
        ]
      },
      "StorageDriveInfo": {
        "additionalProperties": false,
        "properties": {
          "boss": {
            "type": "boolean"
          },
          "sdCard": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "StorageDriveSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageDriveAdvancedSearch"
          }
        ]
      },
      "StorageDriveSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionDriver"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionBoss"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionPartitions"
          },
          {
            "$ref": "#/components/schemas/StorageDriveSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageDriveSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageDriveSearchConditionNot"
          }
        ]
      },
      "StorageDriveSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageDriveSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageDriveSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageDriveSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageDriveSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageDriveSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageDriveSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageDriveSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageDriveSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageDriveSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageDriveSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageDriveSearchSortCriterionFull"
          }
        ]
      },
      "StorageDriveSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageDriveSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageDriveType": {
        "enum": [
          "disk",
          "raid",
          "multipath",
          "dasd"
        ],
        "title": "Drive type"
      },
      "StorageEncryption": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageEncryptionLuks1"
          },
          {
            "$ref": "#/components/schemas/StorageEncryptionLuks2"
          },
          {
            "$ref": "#/components/schemas/StorageEncryptionPervasiveLuks2"
          },
          {
            "$ref": "#/components/schemas/StorageEncryptionTpmFde"
          },
          {
            "$ref": "#/components/schemas/StorageEncryptionSwap"
          }
        ]
      },
      "StorageEncryptionCipher": {
        "description": "The value must be compatible with the --cipher argument of the command cryptsetup.",
        "type": "string"
      },
      "StorageEncryptionKeySize": {
        "description": "The value (in bits) has to be a multiple of 8. The possible key sizes are limited by the used cipher.",
        "type": "integer"
      },
      "StorageEncryptionLuks1": {
        "additionalProperties": false,
        "description": "LUKS1 encryption.",
        "properties": {
          "luks1": {
            "additionalProperties": false,
            "properties": {
              "cipher": {
                "$ref": "#/components/schemas/StorageEncryptionCipher"
              },
              "keySize": {
                "$ref": "#/components/schemas/StorageEncryptionKeySize"
              },
              "password": {
                "$ref": "#/components/schemas/StorageEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "luks1"
        ],
        "type": "object"
      },
      "StorageEncryptionLuks2": {
        "additionalProperties": false,
        "description": "LUKS2 encryption.",
        "properties": {
          "luks2": {
            "additionalProperties": false,
            "properties": {
              "cipher": {
                "$ref": "#/components/schemas/StorageEncryptionCipher"
              },
              "keySize": {
                "$ref": "#/components/schemas/StorageEncryptionKeySize"
              },
              "label": {
                "description": "LUKS2 label.",
                "type": "string"
              },
              "password": {
                "$ref": "#/components/schemas/StorageEncryptionPassword"
              },
              "pbkdFunction": {
                "$ref": "#/components/schemas/StorageEncryptionPbkdFunction"
              },
              "tpm": {
                "default": false,
                "description": "Whether to use TPM2 unlocking.",
                "type": "boolean"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "luks2"
        ],
        "type": "object"
      },
      "StorageEncryptionMethod": {
        "enum": [
          "luks2",
          "tpmFde"
        ],
        "title": "Encryption method"
      },
      "StorageEncryptionPassword": {
        "description": "Password to use when creating a new encryption device.",
        "type": "string"
      },
      "StorageEncryptionPbkdFunction": {
        "enum": [
          "pbkdf2",
          "argon2i",
          "argon2id"
        ]
      },
      "StorageEncryptionPervasiveLuks2": {
        "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/StorageEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "pervasiveLuks2"
        ],
        "type": "object"
      },
      "StorageEncryptionSwap": {
        "description": "Swap encryptions. The snake case names are deprecated.",
        "enum": [
          "protected_swap",
          "secure_swap",
          "random_swap",
          "protectedSwap",
          "secureSwap",
          "randomSwap"
        ]
      },
      "StorageEncryptionTpmFde": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "TPM-Based Full Disk Encryption.",
        "properties": {
          "tpmFde": {
            "additionalProperties": false,
            "properties": {
              "password": {
                "$ref": "#/components/schemas/StorageEncryptionPassword"
              }
            },
            "required": [
              "password"
            ],
            "type": "object"
          }
        },
        "required": [
          "tpmFde"
        ],
        "type": "object"
      },
      "StorageFilesystem": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "mountPath": {
            "type": "string"
          },
          "sid": {
            "type": "integer"
          },
          "type": {
            "$ref": "#/components/schemas/StorageFilesystemType"
          }
        },
        "required": [
          "sid",
          "type"
        ],
        "type": "object"
      },
      "StorageFilesystemCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageFilesystemConditionType"
          },
          {
            "$ref": "#/components/schemas/StorageFilesystemConditionLabel"
          },
          {
            "$ref": "#/components/schemas/StorageFilesystemConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageFilesystemConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageFilesystemConditionNot"
          }
        ],
        "description": "Matches formatted devices whose file system satisfies the condition."
      },
      "StorageFilesystemConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageFilesystemCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageFilesystemConditionLabel": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "description": "File system label.",
            "type": "string"
          }
        },
        "required": [
          "label"
        ],
        "type": "object"
      },
      "StorageFilesystemConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageFilesystemCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageFilesystemConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageFilesystemCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageFilesystemConditionType": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/StorageFilesystemTypeAny"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "StorageFilesystemType": {
        "enum": [
          "bcachefs",
          "btrfs",
          "btrfsSnapshots",
          "btrfsImmutable",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ],
        "title": "Filesystem type"
      },
      "StorageFilesystemTypeAny": {
        "enum": [
          "bcachefs",
          "btrfs",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ]
      },
      "StorageFilesystemTypeBtrfs": {
        "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"
      },
      "StorageIssue": {
        "additionalProperties": false,
        "properties": {
          "class": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "details": {
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "StorageLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "name": {
            "$ref": "#/components/schemas/StorageBaseName"
          },
          "search": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          },
          "stripeSize": {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          "stripes": {
            "$ref": "#/components/schemas/StorageLogicalVolumeStripes"
          }
        },
        "type": "object"
      },
      "StorageLogicalVolumeAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchSort"
          }
        },
        "type": "object"
      },
      "StorageLogicalVolumeElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSimpleVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageAdvancedLogicalVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageThinPoolLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageThinLogicalVolume"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeToDelete"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeToDeleteIfNeeded"
          }
        ]
      },
      "StorageLogicalVolumeSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeAdvancedSearch"
          }
        ]
      },
      "StorageLogicalVolumeSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchConditionNot"
          }
        ]
      },
      "StorageLogicalVolumeSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageLogicalVolumeSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageLogicalVolumeSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageLogicalVolumeSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageLogicalVolumeSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageLogicalVolumeSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageLogicalVolumeSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageLogicalVolumeSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageLogicalVolumeSearchSortCriterionFull"
          }
        ]
      },
      "StorageLogicalVolumeSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageLogicalVolumeSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageLogicalVolumeStripes": {
        "description": "Number of stripes.",
        "maximum": 128,
        "minimum": 1,
        "type": "integer"
      },
      "StorageLogicalVolumeToDelete": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "const": true,
            "description": "Delete the logical volume."
          },
          "search": {
            "$ref": "#/components/schemas/StorageDeleteLogicalVolumeSearch"
          }
        },
        "required": [
          "delete",
          "search"
        ],
        "type": "object"
      },
      "StorageLogicalVolumeToDeleteIfNeeded": {
        "additionalProperties": false,
        "properties": {
          "deleteIfNeeded": {
            "const": true,
            "description": "Delete the logical volume if needed to make space."
          },
          "search": {
            "$ref": "#/components/schemas/StorageDeleteLogicalVolumeSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          }
        },
        "required": [
          "deleteIfNeeded",
          "search"
        ],
        "type": "object"
      },
      "StorageMd": {
        "additionalProperties": false,
        "properties": {
          "devices": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "level": {
            "$ref": "#/components/schemas/StorageMdRaidLevel"
          },
          "uuid": {
            "type": "string"
          }
        },
        "required": [
          "level",
          "devices"
        ],
        "type": "object"
      },
      "StorageMdRaidAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageMdRaidSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageMdRaidSearchSort"
          }
        },
        "type": "object"
      },
      "StorageMdRaidDevices": {
        "description": "Devices used by the MD RAID.",
        "items": {
          "$ref": "#/components/schemas/StorageAlias"
        },
        "type": "array"
      },
      "StorageMdRaidElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageNonPartitionedMdRaid"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionedMdRaid"
          }
        ]
      },
      "StorageMdRaidLevel": {
        "enum": [
          "raid0",
          "raid1",
          "raid5",
          "raid6",
          "raid10"
        ],
        "title": "MD level"
      },
      "StorageMdRaidParity": {
        "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"
      },
      "StorageMdRaidSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageMdRaidAdvancedSearch"
          }
        ]
      },
      "StorageMdRaidSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionPartitions"
          },
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchConditionNot"
          }
        ]
      },
      "StorageMdRaidSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageMdRaidSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageMdRaidSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageMdRaidSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageMdRaidSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageMdRaidSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageMdRaidSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageMdRaidSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageMdRaidSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageMdRaidSearchSortCriterionFull"
          }
        ]
      },
      "StorageMdRaidSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageMdRaidSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageModelBoot": {
        "additionalProperties": false,
        "properties": {
          "bootloader": {
            "$ref": "#/components/schemas/StorageModelBootloaderType"
          },
          "configure": {
            "type": "boolean"
          },
          "device": {
            "$ref": "#/components/schemas/StorageModelBootDevice"
          }
        },
        "required": [
          "configure"
        ],
        "type": "object"
      },
      "StorageModelBootDevice": {
        "additionalProperties": false,
        "properties": {
          "default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "default"
        ],
        "type": "object"
      },
      "StorageModelBootloaderType": {
        "enum": [
          "grub2",
          "grub2-bls",
          "systemd-boot"
        ]
      },
      "StorageModelConfig": {
        "additionalProperties": false,
        "description": "Config model",
        "properties": {
          "boot": {
            "$ref": "#/components/schemas/StorageModelBoot"
          },
          "drives": {
            "items": {
              "$ref": "#/components/schemas/StorageModelDrive"
            },
            "type": "array"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageModelEncryption"
          },
          "mdRaids": {
            "items": {
              "$ref": "#/components/schemas/StorageModelMdRaid"
            },
            "type": "array"
          },
          "volumeGroups": {
            "items": {
              "$ref": "#/components/schemas/StorageModelVolumeGroup"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "StorageModelDrive": {
        "additionalProperties": false,
        "properties": {
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelFilesystem"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StorageModelPartition"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StorageModelPtableType"
          },
          "spacePolicy": {
            "$ref": "#/components/schemas/StorageModelSpacePolicy"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "StorageModelEncryption": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "type": "string"
          },
          "tpm": {
            "type": "boolean"
          }
        },
        "required": [
          "method"
        ],
        "type": "object"
      },
      "StorageModelFilesystem": {
        "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/StorageModelFilesystemType"
          }
        },
        "required": [
          "default"
        ],
        "type": "object"
      },
      "StorageModelFilesystemType": {
        "enum": [
          "bcachefs",
          "btrfs",
          "btrfsImmutable",
          "btrfsSnapshots",
          "exfat",
          "ext2",
          "ext3",
          "ext4",
          "f2fs",
          "jfs",
          "nfs",
          "nilfs2",
          "ntfs",
          "reiserfs",
          "swap",
          "tmpfs",
          "vfat",
          "xfs"
        ]
      },
      "StorageModelLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "deleteIfNeeded": {
            "type": "boolean"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelFilesystem"
          },
          "lvName": {
            "type": "string"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "resize": {
            "type": "boolean"
          },
          "resizeIfNeeded": {
            "type": "boolean"
          },
          "size": {
            "$ref": "#/components/schemas/StorageModelSize"
          },
          "stripeSize": {
            "type": "integer"
          },
          "stripes": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StorageModelMdRaid": {
        "$comment": "So far, drive and RAID are still identical. Let's reuse the definition.",
        "$ref": "#/components/schemas/StorageModelDrive"
      },
      "StorageModelPartition": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "type": "boolean"
          },
          "deleteIfNeeded": {
            "type": "boolean"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageModelFilesystem"
          },
          "id": {
            "$ref": "#/components/schemas/StorageModelPartitionId"
          },
          "mountPath": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "resize": {
            "type": "boolean"
          },
          "resizeIfNeeded": {
            "type": "boolean"
          },
          "size": {
            "$ref": "#/components/schemas/StorageModelSize"
          }
        },
        "type": "object"
      },
      "StorageModelPartitionId": {
        "enum": [
          "linux",
          "swap",
          "lvm",
          "raid",
          "esp",
          "prep",
          "bios_boot"
        ]
      },
      "StorageModelPtableType": {
        "enum": [
          "gpt",
          "msdos",
          "dasd"
        ]
      },
      "StorageModelSize": {
        "additionalProperties": false,
        "properties": {
          "default": {
            "type": "boolean"
          },
          "max": {
            "minimum": 0,
            "type": "integer"
          },
          "min": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "default",
          "min"
        ],
        "type": "object"
      },
      "StorageModelSpacePolicy": {
        "enum": [
          "delete",
          "resize",
          "keep",
          "custom"
        ]
      },
      "StorageModelVolumeGroup": {
        "additionalProperties": false,
        "properties": {
          "extentSize": {
            "type": "integer"
          },
          "logicalVolumes": {
            "items": {
              "$ref": "#/components/schemas/StorageModelLogicalVolume"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "spacePolicy": {
            "$ref": "#/components/schemas/StorageModelSpacePolicy"
          },
          "targetDevices": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetDevicesPolicy": {
            "enum": [
              "useNeeded",
              "useAvailable"
            ]
          },
          "vgName": {
            "type": "string"
          }
        },
        "required": [
          "vgName"
        ],
        "type": "object"
      },
      "StorageMultipath": {
        "additionalProperties": false,
        "properties": {
          "wireNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "wireNames"
        ],
        "type": "object"
      },
      "StorageNonPartitionedDrive": {
        "additionalProperties": false,
        "description": "Drive without a partition table (e.g., directly formatted).",
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "search": {
            "$ref": "#/components/schemas/StorageDriveSearch"
          }
        },
        "type": "object"
      },
      "StorageNonPartitionedMdRaid": {
        "additionalProperties": false,
        "description": "MD RAID without a partition table (e.g., directly formatted).",
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "chunkSize": {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          "devices": {
            "$ref": "#/components/schemas/StorageMdRaidDevices"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "level": {
            "$ref": "#/components/schemas/StorageMdRaidLevel"
          },
          "name": {
            "$ref": "#/components/schemas/StorageBaseName"
          },
          "parity": {
            "$ref": "#/components/schemas/StorageMdRaidParity"
          },
          "search": {
            "$ref": "#/components/schemas/StorageMdRaidSearch"
          }
        },
        "type": "object"
      },
      "StoragePartition": {
        "additionalProperties": false,
        "properties": {
          "efi": {
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/StoragePartitionId"
          }
        },
        "required": [
          "efi"
        ],
        "type": "object"
      },
      "StoragePartitionAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StoragePartitionSearchSort"
          }
        },
        "type": "object"
      },
      "StoragePartitionElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSimpleVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageAdvancedPartitionsGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageRegularPartition"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionToDelete"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionToDeleteIfNeeded"
          }
        ]
      },
      "StoragePartitionId": {
        "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"
      },
      "StoragePartitionIdAny": {
        "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"
      },
      "StoragePartitionSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionAdvancedSearch"
          }
        ]
      },
      "StoragePartitionSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionPartitionNumber"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionPartitionId"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionFilesystem"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionSearchConditionNot"
          }
        ]
      },
      "StoragePartitionSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StoragePartitionSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StoragePartitionSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StoragePartitionSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StoragePartitionSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StoragePartitionSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StoragePartitionSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StoragePartitionSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StoragePartitionSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StoragePartitionSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionSearchSortCriterionFull"
          }
        ]
      },
      "StoragePartitionSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "number": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StoragePartitionSearchSortCriterionShort": {
        "enum": [
          "name",
          "size",
          "number"
        ]
      },
      "StoragePartitionTable": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/StoragePtableType"
          },
          "unusedSlots": {
            "items": {
              "$ref": "#/components/schemas/StorageUnusedSlot"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "unusedSlots"
        ],
        "type": "object"
      },
      "StoragePartitionToDelete": {
        "additionalProperties": false,
        "properties": {
          "delete": {
            "const": true,
            "description": "Delete the partition."
          },
          "search": {
            "$ref": "#/components/schemas/StorageDeletePartitionSearch"
          }
        },
        "required": [
          "delete",
          "search"
        ],
        "type": "object"
      },
      "StoragePartitionToDeleteIfNeeded": {
        "additionalProperties": false,
        "properties": {
          "deleteIfNeeded": {
            "const": true,
            "description": "Delete the partition if needed to make space."
          },
          "search": {
            "$ref": "#/components/schemas/StorageDeletePartitionSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          }
        },
        "required": [
          "deleteIfNeeded",
          "search"
        ],
        "type": "object"
      },
      "StoragePartitionedDrive": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StoragePartitionElement"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StoragePtableType"
          },
          "search": {
            "$ref": "#/components/schemas/StorageDriveSearch"
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StoragePartitionedMdRaid": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "chunkSize": {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          "devices": {
            "$ref": "#/components/schemas/StorageMdRaidDevices"
          },
          "level": {
            "$ref": "#/components/schemas/StorageMdRaidLevel"
          },
          "name": {
            "$ref": "#/components/schemas/StorageBaseName"
          },
          "parity": {
            "$ref": "#/components/schemas/StorageMdRaidParity"
          },
          "partitions": {
            "items": {
              "$ref": "#/components/schemas/StoragePartitionElement"
            },
            "type": "array"
          },
          "ptableType": {
            "$ref": "#/components/schemas/StoragePtableType"
          },
          "search": {
            "$ref": "#/components/schemas/StorageMdRaidSearch"
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StoragePartitionsCount": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "min"
            ]
          },
          {
            "required": [
              "max"
            ]
          }
        ],
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition",
            "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"
      },
      "StoragePartitionsQuantifier": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StoragePartitionsQuantifierAny"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionsQuantifierNone"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionsQuantifierAll"
          },
          {
            "$ref": "#/components/schemas/StoragePartitionsQuantifierCount"
          }
        ],
        "description": "Matches devices whose partitions satisfy the quantifier."
      },
      "StoragePartitionsQuantifierAll": {
        "additionalProperties": false,
        "properties": {
          "all": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition",
            "description": "Matches when there is at least one partition and all partitions satisfy the condition."
          }
        },
        "required": [
          "all"
        ],
        "type": "object"
      },
      "StoragePartitionsQuantifierAny": {
        "additionalProperties": false,
        "properties": {
          "any": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition",
            "description": "Matches when at least one partition satisfies the condition."
          }
        },
        "required": [
          "any"
        ],
        "type": "object"
      },
      "StoragePartitionsQuantifierCount": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "$ref": "#/components/schemas/StoragePartitionsCount"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "StoragePartitionsQuantifierNone": {
        "additionalProperties": false,
        "properties": {
          "none": {
            "$ref": "#/components/schemas/StoragePartitionSearchCondition",
            "description": "Matches when no partition satisfies the condition."
          }
        },
        "required": [
          "none"
        ],
        "type": "object"
      },
      "StoragePhysicalVolumeElement": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageAlias"
          },
          {
            "$ref": "#/components/schemas/StorageSimplePhysicalVolumesGenerator"
          },
          {
            "$ref": "#/components/schemas/StorageAdvancedPhysicalVolumesGenerator"
          }
        ]
      },
      "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/StorageAction"
            },
            "type": "array"
          },
          "devices": {
            "description": "Expected layout of the system after the commit phase.",
            "items": {
              "$ref": "#/components/schemas/StorageDevice"
            },
            "type": "array"
          }
        },
        "title": "Proposal",
        "type": "object"
      },
      "StoragePtableType": {
        "enum": [
          "gpt",
          "msdos",
          "dasd"
        ],
        "title": "Partition table type"
      },
      "StorageRegularPartition": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "id": {
            "enum": [
              "linux",
              "swap",
              "lvm",
              "raid",
              "esp",
              "prep",
              "bios_boot"
            ],
            "title": "Partition id"
          },
          "search": {
            "$ref": "#/components/schemas/StoragePartitionSearch"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          }
        },
        "type": "object"
      },
      "StorageSearchActions": {
        "default": "error",
        "description": "How to handle the section if the device is not found.",
        "enum": [
          "skip",
          "error"
        ]
      },
      "StorageSearchAll": {
        "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)."
      },
      "StorageSearchConditionBoss": {
        "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"
      },
      "StorageSearchConditionDriver": {
        "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"
      },
      "StorageSearchConditionFilesystem": {
        "additionalProperties": false,
        "properties": {
          "filesystem": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageSearchFilesystemPresence"
              },
              {
                "$ref": "#/components/schemas/StorageFilesystemCondition"
              }
            ]
          }
        },
        "required": [
          "filesystem"
        ],
        "type": "object"
      },
      "StorageSearchConditionName": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchName"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "StorageSearchConditionPartitionId": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "$ref": "#/components/schemas/StoragePartitionIdAny"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "StorageSearchConditionPartitionNumber": {
        "additionalProperties": false,
        "properties": {
          "number": {
            "description": "Partition number (e.g., 1 for vda1).",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "number"
        ],
        "type": "object"
      },
      "StorageSearchConditionPartitions": {
        "additionalProperties": false,
        "properties": {
          "partitions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageSearchPartitionsPresence"
              },
              {
                "$ref": "#/components/schemas/StoragePartitionsQuantifier"
              }
            ]
          }
        },
        "required": [
          "partitions"
        ],
        "type": "object"
      },
      "StorageSearchConditionSize": {
        "additionalProperties": false,
        "properties": {
          "size": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StorageSizeValue"
              },
              {
                "$ref": "#/components/schemas/StorageSearchConditionSizeEqual"
              },
              {
                "$ref": "#/components/schemas/StorageSearchConditionSizeGreater"
              },
              {
                "$ref": "#/components/schemas/StorageSearchConditionSizeLess"
              }
            ]
          }
        },
        "required": [
          "size"
        ],
        "type": "object"
      },
      "StorageSearchConditionSizeEqual": {
        "additionalProperties": false,
        "properties": {
          "equal": {
            "$ref": "#/components/schemas/StorageSizeValue"
          }
        },
        "required": [
          "equal"
        ],
        "type": "object"
      },
      "StorageSearchConditionSizeGreater": {
        "additionalProperties": false,
        "properties": {
          "greater": {
            "$ref": "#/components/schemas/StorageSizeValue"
          }
        },
        "required": [
          "greater"
        ],
        "type": "object"
      },
      "StorageSearchConditionSizeLess": {
        "additionalProperties": false,
        "properties": {
          "less": {
            "$ref": "#/components/schemas/StorageSizeValue"
          }
        },
        "required": [
          "less"
        ],
        "type": "object"
      },
      "StorageSearchCreatableActions": {
        "default": "error",
        "description": "How to handle the section if the device is not found.",
        "enum": [
          "skip",
          "error",
          "create"
        ]
      },
      "StorageSearchFilesystemPresence": {
        "description": "Shortcut to match by filesystem presence: \"any\" matches formatted devices, \"none\" matches unformatted ones.",
        "enum": [
          "any",
          "none"
        ]
      },
      "StorageSearchMax": {
        "description": "Maximum devices to match.",
        "minimum": 1,
        "type": "integer"
      },
      "StorageSearchName": {
        "description": "Search by device name",
        "examples": [
          "/dev/vda",
          "/dev/disk/by-id/ata-WDC_WD3200AAKS-75L9"
        ],
        "type": "string"
      },
      "StorageSearchPartitionsPresence": {
        "description": "Shortcut to match by partitions presence: \"any\" matches devices with at least one partition, \"none\" matches devices with no partitions.",
        "enum": [
          "any",
          "none"
        ]
      },
      "StorageSearchSortCriterionOrder": {
        "description": "Direction of sorting at the search results",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "StorageShrinkInfo": {
        "additionalProperties": false,
        "properties": {
          "minSize": {
            "type": "integer"
          },
          "reasons": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "supported": {
            "type": "boolean"
          }
        },
        "required": [
          "supported"
        ],
        "type": "object"
      },
      "StorageSimplePhysicalVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the needed physical volumes in the indicated devices.",
        "properties": {
          "generate": {
            "items": {
              "$ref": "#/components/schemas/StorageAlias"
            },
            "type": "array"
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageSimpleVolumesGenerator": {
        "additionalProperties": false,
        "description": "Automatically creates the default or mandatory volumes configured by the selected product.",
        "properties": {
          "generate": {
            "enum": [
              "default",
              "mandatory"
            ]
          }
        },
        "required": [
          "generate"
        ],
        "type": "object"
      },
      "StorageSize": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          {
            "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/StorageSizeValueWithCurrent"
            },
            "maxItems": 2,
            "minItems": 1,
            "title": "Size tuple",
            "type": "array"
          },
          {
            "additionalProperties": false,
            "description": "Size range.",
            "properties": {
              "max": {
                "$ref": "#/components/schemas/StorageSizeValueWithCurrent"
              },
              "min": {
                "$ref": "#/components/schemas/StorageSizeValueWithCurrent"
              }
            },
            "required": [
              "min"
            ],
            "title": "Size range",
            "type": "object"
          }
        ],
        "title": "Size"
      },
      "StorageSizeBytes": {
        "description": "Size in bytes.",
        "examples": [
          1024,
          2048
        ],
        "minimum": 0,
        "type": "integer"
      },
      "StorageSizeString": {
        "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"
      },
      "StorageSizeValue": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSizeString"
          },
          {
            "$ref": "#/components/schemas/StorageSizeBytes"
          }
        ]
      },
      "StorageSizeValueWithCurrent": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          {
            "const": "current",
            "description": "The current size of the device.",
            "title": "Size current"
          }
        ]
      },
      "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/StorageIssue"
            },
            "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/StorageVolume"
            },
            "type": "array"
          }
        },
        "title": "System",
        "type": "object"
      },
      "StorageThinLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "filesystem": {
            "$ref": "#/components/schemas/StorageFilesystem"
          },
          "name": {
            "$ref": "#/components/schemas/StorageBaseName"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          },
          "usedPool": {
            "$ref": "#/components/schemas/StorageAlias"
          }
        },
        "required": [
          "usedPool"
        ],
        "type": "object"
      },
      "StorageThinPoolLogicalVolume": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "$ref": "#/components/schemas/StorageAlias"
          },
          "encryption": {
            "$ref": "#/components/schemas/StorageEncryption"
          },
          "name": {
            "$ref": "#/components/schemas/StorageBaseName"
          },
          "pool": {
            "const": true,
            "description": "LVM thin pool."
          },
          "size": {
            "$ref": "#/components/schemas/StorageSize"
          },
          "stripeSize": {
            "$ref": "#/components/schemas/StorageSizeValue"
          },
          "stripes": {
            "$ref": "#/components/schemas/StorageLogicalVolumeStripes"
          }
        },
        "required": [
          "pool"
        ],
        "type": "object"
      },
      "StorageUnusedSlot": {
        "additionalProperties": false,
        "properties": {
          "size": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          }
        },
        "required": [
          "start",
          "size"
        ],
        "type": "object"
      },
      "StorageVolume": {
        "additionalProperties": false,
        "properties": {
          "autoSize": {
            "type": "boolean"
          },
          "fsType": {
            "$ref": "#/components/schemas/StorageFilesystemType"
          },
          "maxSize": {
            "type": "integer"
          },
          "minSize": {
            "type": "integer"
          },
          "mountOptions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "mountPath": {
            "type": "string"
          },
          "outline": {
            "$ref": "#/components/schemas/StorageVolumeOutline"
          }
        },
        "required": [
          "mountPath",
          "minSize",
          "autoSize"
        ],
        "type": "object"
      },
      "StorageVolumeGroup": {
        "additionalProperties": false,
        "properties": {
          "physicalVolumes": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "size": {
            "type": "integer"
          }
        },
        "required": [
          "size",
          "physicalVolumes"
        ],
        "type": "object"
      },
      "StorageVolumeGroupAdvancedSearch": {
        "additionalProperties": false,
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchCondition"
          },
          "ifNotFound": {
            "$ref": "#/components/schemas/StorageSearchCreatableActions"
          },
          "max": {
            "$ref": "#/components/schemas/StorageSearchMax"
          },
          "sort": {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchSort"
          }
        },
        "type": "object"
      },
      "StorageVolumeGroupSearch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchAll"
          },
          {
            "$ref": "#/components/schemas/StorageSearchName"
          },
          {
            "$ref": "#/components/schemas/StorageVolumeGroupAdvancedSearch"
          }
        ]
      },
      "StorageVolumeGroupSearchCondition": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageSearchConditionName"
          },
          {
            "$ref": "#/components/schemas/StorageSearchConditionSize"
          },
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchConditionAnd"
          },
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchConditionOr"
          },
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchConditionNot"
          }
        ]
      },
      "StorageVolumeGroupSearchConditionAnd": {
        "additionalProperties": false,
        "properties": {
          "and": {
            "description": "Matches when all the nested conditions match.",
            "items": {
              "$ref": "#/components/schemas/StorageVolumeGroupSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "and"
        ],
        "type": "object"
      },
      "StorageVolumeGroupSearchConditionNot": {
        "additionalProperties": false,
        "properties": {
          "not": {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchCondition",
            "description": "Matches when the nested condition does not match."
          }
        },
        "required": [
          "not"
        ],
        "type": "object"
      },
      "StorageVolumeGroupSearchConditionOr": {
        "additionalProperties": false,
        "properties": {
          "or": {
            "description": "Matches when any of the nested conditions matches.",
            "items": {
              "$ref": "#/components/schemas/StorageVolumeGroupSearchCondition"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "or"
        ],
        "type": "object"
      },
      "StorageVolumeGroupSearchSort": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchSortCriterion"
          },
          {
            "items": {
              "$ref": "#/components/schemas/StorageVolumeGroupSearchSortCriterion"
            },
            "type": "array"
          }
        ]
      },
      "StorageVolumeGroupSearchSortCriterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchSortCriterionShort"
          },
          {
            "$ref": "#/components/schemas/StorageVolumeGroupSearchSortCriterionFull"
          }
        ]
      },
      "StorageVolumeGroupSearchSortCriterionFull": {
        "additionalProperties": false,
        "maxProperties": 1,
        "minProperties": 1,
        "properties": {
          "name": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          },
          "size": {
            "$ref": "#/components/schemas/StorageSearchSortCriterionOrder"
          }
        },
        "type": "object"
      },
      "StorageVolumeGroupSearchSortCriterionShort": {
        "enum": [
          "name",
          "size"
        ]
      },
      "StorageVolumeOutline": {
        "additionalProperties": false,
        "properties": {
          "adjustByRam": {
            "type": "boolean"
          },
          "fsTypes": {
            "items": {
              "$ref": "#/components/schemas/StorageFilesystemType"
            },
            "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": true,
          "dasd": true,
          "hardware": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HardwareInfo"
              }
            ],
            "description": "Hardware information"
          },
          "hostname": {
            "$ref": "#/components/schemas/hostname.SystemInfo"
          },
          "iscsi": true,
          "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": true,
          "zfcp": true
        },
        "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": {
                    "type": "string"
                  },
                  "id": {
                    "format": "uint32",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "value": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "id",
                  "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 content.",
            "properties": {
              "content": {
                "type": "string"
              }
            },
            "required": [
              "content"
            ],
            "type": "object"
          },
          {
            "description": "URI or relative reference to get the script from.",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          }
        ],
        "description": "Represents individual settings for single file deployment",
        "properties": {
          "destination": {
            "description": "destination for file like \"/etc/config.d/my.conf\"",
            "type": "string"
          },
          "group": {
            "default": "root",
            "description": "Group owning the file",
            "type": "string"
          },
          "permissions": {
            "default": "0644",
            "description": "Permissions for file",
            "type": "string"
          },
          "user": {
            "default": "root",
            "description": "User owning the file",
            "type": "string"
          }
        },
        "required": [
          "destination"
        ],
        "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/ZfcpDevice"
            },
            "type": "array"
          }
        },
        "title": "Config",
        "type": "object"
      },
      "ZfcpController": {
        "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"
      },
      "ZfcpDevice": {
        "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"
      },
      "ZfcpSystemInfo": {
        "additionalProperties": false,
        "description": "API description of the zFCP system",
        "properties": {
          "controllers": {
            "description": "zFCP controllers",
            "items": {
              "$ref": "#/components/schemas/ZfcpController"
            },
            "type": "array"
          },
          "devices": {
            "description": "zFCP devices",
            "items": {
              "$ref": "#/components/schemas/ZfcpDevice"
            },
            "type": "array"
          },
          "lunScan": {
            "description": "Whether automatic LUN scan is active in the system.",
            "type": "boolean"
          }
        },
        "required": [
          "lunScan",
          "controllers",
          "devices"
        ],
        "title": "System",
        "type": "object"
      },
      "access.Config": {
        "description": "Remote Access configuration",
        "properties": {
          "ssh": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Remote access to SSH"
          },
          "webConsole": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccessValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Remote access to Web Console"
          }
        },
        "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"
            ]
          }
        },
        "type": "object"
      },
      "hostname.Config": {
        "description": "Hostname config.",
        "properties": {
          "hostname": {
            "type": [
              "string",
              "null"
            ]
          },
          "static": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "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": {
          "keymap": {
            "description": "Keymap (e.g., \"us\", \"cz(qwerty)\", etc.).",
            "type": [
              "string",
              "null"
            ]
          },
          "locale": {
            "description": "Locale (e.g., \"en_US.UTF-8\").",
            "type": [
              "string",
              "null"
            ]
          },
          "timezone": {
            "description": "Timezone (e.g., \"Europe/Berlin\").",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "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": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "proxy.Config": {
        "description": "Proxy config.",
        "properties": {
          "enabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "ftp": {
            "type": [
              "string",
              "null"
            ]
          },
          "gopher": {
            "type": [
              "string",
              "null"
            ]
          },
          "http": {
            "type": [
              "string",
              "null"
            ]
          },
          "https": {
            "type": [
              "string",
              "null"
            ]
          },
          "noProxy": {
            "type": [
              "string",
              "null"
            ]
          },
          "socks": {
            "type": [
              "string",
              "null"
            ]
          },
          "socks5": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "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": {
            "type": "string"
          },
          "value": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "questions.Config": {
        "description": "Questions configuration.",
        "properties": {
          "answers": {
            "items": {
              "$ref": "#/components/schemas/AnswerRule"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Policy"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object"
      },
      "security.Config": {
        "description": "Security settings for installation",
        "properties": {
          "sslCertificates": {
            "description": "List of user selected patterns to install.",
            "items": {
              "$ref": "#/components/schemas/SSLFingerprint"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "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": "User configuration for the localization of the target system.\n\nThis configuration is provided by the user, so all the values are optional.",
          "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"
    }
  ]
}