{
  "pluginAlias": "ADTPulse",
  "pluginType": "platform",
  "singular": true,
  "customUi": true,
  "customUiPath": "./build/config-ui",
  "schema": {
    "type": "object",
    "properties": {
      "name": {
        "title": "Name",
        "type": "string",
        "required": true,
        "description": "Enter a unique name for this plugin. The name will mainly be used for identification purposes, such as in Homebridge logs.",
        "default": "ADT Pulse",
        "placeholder": "ADT Pulse",
        "minLength": 1,
        "maxLength": 50
      },
      "subdomain": {
        "title": "Portal Region",
        "type": "string",
        "required": true,
        "description": "Select the portal region based on where you are subscribed in.",
        "oneOf": [
          {
            "title": "United States \uD83C\uDDFA\uD83C\uDDF8</span>",
            "enum": [
              "portal"
            ]
          },
          {
            "title": "Canada \uD83C\uDDE8\uD83C\uDDE6",
            "enum": [
              "portal-ca"
            ]
          }
        ],
        "default": "portal"
      },
      "username": {
        "title": "Username",
        "type": "string",
        "required": true,
        "description": "Provide the username you use to login to the portal.",
        "placeholder": "e.g. user@example.com",
        "minLength": 1,
        "maxLength": 100
      },
      "password": {
        "title": "Password",
        "type": "string",
        "required": true,
        "description": "Provide the password you use to login to the portal.",
        "placeholder": "e.g. Mys7r0nG!P@ssw0rd",
        "minLength": 1,
        "maxLength": 300
      },
      "fingerprint": {
        "title": "Fingerprint",
        "type": "string",
        "required": true,
        "description": "Generate a new fingerprint by deleting the configuration and re-running setup.",
        "placeholder": "e.g. VGhpc0lzQVNlY3VyZVBhc3N3b3JkMTIzIQ==",
        "minLength": 1,
        "maxLength": 10240
      },
      "mode": {
        "title": "Operational Mode",
        "type": "string",
        "required": true,
        "description": "Choose the operational mode for the plugin. Debug mode is enabled only when Homebridge debug mode is on; there is no separate setting for this.",
        "oneOf": [
          {
            "title": "Normal",
            "enum": [
              "normal"
            ]
          },
          {
            "title": "Paused",
            "enum": [
              "paused"
            ]
          },
          {
            "title": "Reset",
            "enum": [
              "reset"
            ]
          }
        ],
        "default": "normal"
      },
      "speed": {
        "title": "Synchronization Speed",
        "type": "number",
        "required": true,
        "description": "Choose the synchronization speed for the plugin. Designed to enhance the performance of devices with older hardware. May result in slower device updates.",
        "oneOf": [
          {
            "title": "Normal Speed (1x)",
            "enum": [
              1
            ]
          },
          {
            "title": "Moderate Speed (0.75x)",
            "enum": [
              0.75
            ]
          },
          {
            "title": "Slower Speed (0.5x)",
            "enum": [
              0.5
            ]
          },
          {
            "title": "Slowest Speed (0.25x)",
            "enum": [
              0.25
            ]
          }
        ],
        "default": 1
      },
      "options": {
        "title": "Advanced Options",
        "type": "array",
        "description": "Customize the features of this plugin. Please note these advanced options will disable expected functionality. Only enable them if necessary.",
        "items": {
          "type": "string",
          "enum": [
            "disableAlarmRingingSwitch",
            "ignoreSensorProblemStatus"
          ]
        }
      },
      "sensors": {
        "title": "Sensors",
        "type": "array",
        "description": "Define your sensors here. Sensors include devices like \"Door/Window Sensor\" or \"Motion Sensor\". <strong class=\"font-weight-bold\">Please note that Z-Wave accessories are not supported.</strong> A maximum of 147 sensors can be added (3 slots are reserved for the gateway, security panel, and alarm ringing switch).",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "title": "Name",
              "type": "string",
              "required": false,
              "description": "<strong class=\"font-weight-bold\">Optional.</strong> Provide a display name for this sensor to differentiate it from the names assigned by ADT technicians during installation.",
              "placeholder": "e.g. Family Room Couch Window 1",
              "minLength": 0,
              "maxLength": 50
            },
            "adtName": {
              "title": "ADT Sensor Name",
              "type": "string",
              "required": true,
              "description": "Specify the <strong class=\"font-weight-bold\">exact name</strong> associated with the sensor you want to add. Double-check the names to ensure they don't include extra characters when copying and pasting.",
              "placeholder": "e.g. Family Room Window (99)",
              "minLength": 1,
              "maxLength": 100
            },
            "adtZone": {
              "title": "ADT Sensor Zone",
              "type": "number",
              "required": true,
              "description": "Specify the <strong class=\"font-weight-bold\">exact zone</strong> associated with the sensor you want to add. Double-check the zone to ensure the correct sensor is added.",
              "placeholder": "e.g. 99",
              "minimum": 1,
              "maximum": 99
            },
            "adtType": {
              "title": "ADT Sensor Type",
              "type": "string",
              "required": true,
              "description": "Select the <strong class=\"font-weight-bold\">type</strong> associated with the sensor you want to add. Ensure your selection matches the sensor type, as selecting the wrong type may lead to incorrect status detection.",
              "oneOf": [
                {
                  "title": "Carbon Monoxide Detector",
                  "enum": [
                    "co"
                  ]
                },
                {
                  "title": "Door/Window Sensor :: Door Sensor :: Window Sensor",
                  "enum": [
                    "doorWindow"
                  ]
                },
                {
                  "title": "Fire (Smoke/Heat) Detector",
                  "enum": [
                    "fire"
                  ]
                },
                {
                  "title": "Water/Flood Sensor",
                  "enum": [
                    "flood"
                  ]
                },
                {
                  "title": "Glass Break Detector",
                  "enum": [
                    "glass"
                  ]
                },
                {
                  "title": "Heat (Rate-of-Rise) Detector",
                  "enum": [
                    "heat"
                  ]
                },
                {
                  "title": "Motion Sensor :: Motion Sensor (Notable Events Only)",
                  "enum": [
                    "motion"
                  ]
                },
                {
                  "title": "Shock Sensor",
                  "enum": [
                    "shock"
                  ]
                },
                {
                  "title": "Temperature Sensor",
                  "enum": [
                    "temperature"
                  ]
                }
              ]
            }
          }
        },
        "minItems": 0,
        "maxItems": 147
      }
    }
  },
  "layout": [
    {
      "type": "tabs",
      "tabs": [
        {
          "title": "General",
          "htmlClass": "px-3 pt-3 pb-0",
          "items": [
            {
              "key": "name",
              "type": "text"
            },
            {
              "key": "mode",
              "type": "select"
            },
            {
              "key": "speed",
              "type": "select"
            },
            {
              "key": "options",
              "type": "checkboxes",
              "titleMap": [
                {
                  "value": "disableAlarmRingingSwitch",
                  "name": "Disable \"Alarm Ringing\" switch"
                },
                {
                  "value": "ignoreSensorProblemStatus",
                  "name": "Ignore \"Sensor Problem\" Panel Status"
                }
              ]
            }
          ]
        },
        {
          "title": "Login",
          "htmlClass": "px-3 pt-3 pb-0",
          "items": [
            {
              "key": "subdomain",
              "type": "select"
            },
            {
              "key": "username",
              "type": "text"
            },
            {
              "key": "password",
              "type": "password"
            }
          ]
        },
        {
          "title": "Fingerprint",
          "htmlClass": "px-3 pt-3 pb-0",
          "items": [
            {
              "key": "fingerprint",
              "type": "password"
            }
          ]
        },
        {
          "title": "Devices",
          "htmlClass": "px-3 pt-3 pb-0",
          "items": [
            {
              "key": "sensors",
              "buttonText": "Add Sensor",
              "items": [
                {
                  "type": "div",
                  "htmlClass": "my-4 p-4",
                  "items": [
                    {
                      "key": "sensors[].name",
                      "type": "text"
                    },
                    {
                      "key": "sensors[].adtName",
                      "type": "text"
                    },
                    {
                      "key": "sensors[].adtZone",
                      "type": "number"
                    },
                    {
                      "key": "sensors[].adtType",
                      "type": "select"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "form": null,
  "display": null
}
