{
  "description": "Cleaning types, suction levels and water flows the robot supports, refreshed on every discovery. set-cleaning-mode values outside these lists are rejected before dispatch.",
  "type": "object",
  "required": [
    "supportedModes"
  ],
  "properties": {
    "supportedModes": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "description": "What a cleaning robot does: vacuum only, mop only, or vacuum and mop together. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.",
        "enum": [
          "VACUUM",
          "MOP",
          "VACUUM_AND_MOP",
          "CUSTOM"
        ]
      },
      "description": "Supported cleaning types"
    },
    "supportedSuctionLevels": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "description": "Vacuum suction level, ordered from off to strongest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.",
        "enum": [
          "OFF",
          "QUIET",
          "BALANCED",
          "TURBO",
          "MAX",
          "MAX_PLUS",
          "CUSTOM"
        ]
      },
      "description": "Supported suction levels"
    },
    "supportedWaterFlows": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "description": "Mop water flow level, ordered from off to highest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.",
        "enum": [
          "OFF",
          "LOW",
          "MEDIUM",
          "HIGH",
          "EXTREME",
          "CUSTOM"
        ]
      },
      "description": "Supported water flows"
    }
  },
  "additionalProperties": false
}
