{
  "title": "Zappl Custom Preferences",
  "description": "Use to customise Zappl user prompt preferences.",
  "__preferencedomain": "com.dare.zappl.preferences",
  "properties": {
    "GeneralOptions": {
      "type": "object",
      "title": "General Options",
      "properties": {
        "activationToken": {
          "title": "Zappl Activation Token",
          "description": "Enter your unique customer activation token. This is required to activate Zappl.",
          "type": "string",
          "minLength": 1,
          "options": {
            "inputAttributes": {
              "placeholder": "Insert key here"
            }
          },
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "publicKey": {
          "title": "Zappl Public Key",
          "description": "Enter your unique customer public key. This is required to activate Zappl.",
          "type": "string",
          "minLength": 1,
          "options": {
            "inputAttributes": {
              "placeholder": "Insert key here"
            }
          },
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "enableReporting": {
          "default": true,
          "format": "checkbox",
          "title": "Enable Compliance Reporting",
          "description": "When enabled, Zappl submits compliance data to the Zappl portal on a recurring interval. Disable this for test devices or environments where portal reporting is not required. Note: To operate in report-only mode (monitor compliance without updating applications), keep this enabled and uncheck \"Allow Background Updates\" and \"Allow Scheduled Update Prompts\"",
          "type": "boolean",
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "backgroundUpdates": {
          "default": "true",
          "format": "checkbox",
          "title": "Allow Background Updates",
          "description": "When enabled, Zappl attempts to silently update apps in the background on a recurring interval. If an app is not in use when an update is available, it will be updated without any prompts being shown to the user. Leaving this enabled is recommended to ensure updates are applied as quickly as possible with minimal user disruption.",
          "type": "boolean",
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "updatePrompts": {
          "default": "true",
          "format": "checkbox",
          "title": "Allow Scheduled Update Prompts",
          "description": "When enabled, Zappl prompts users to temporarily quit and update any apps that could not be updated silently in the background because they were in use at the time. Uncheck this option to disable all scheduled update prompts (not recommended). To configure the behaviour of these prompts, use the options under the \"Scheduled Update Prompt Options\" section of this profile.",
          "type": "boolean",
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "downloadStaggerWindow": {
          "title": "Download Stagger Window",
          "description": "Sets a stagger window in minutes that spreads update downloads across your devices. Each device will randomly pick a time within this window to check for and download new updates after they are released. Increasing this value is recommended for large sites to reduce network load. The default and minimum value is 60 minutes and the maximum is 360 minutes (6 hours).",
          "anyOf": [
            {
              "title": "Configured",
              "type": "integer",
              "minimum": 60,
              "maximum": 360,
              "default": 60,
              "options": {
                "inputAttributes": {
                  "placeholder": "60"
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            {
              "title": "Not Configured",
              "type": "null"
            }
          ]
        },
        "autoUpdate": {
          "default": "true",
          "format": "checkbox",
          "title": "Automatic Self Updates",
          "description": "Determines whether Zappl automatically updates itself when new major and point releases are available. Uncheck this option if you prefer to manually update Zappl.",
          "type": "boolean",
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "autoInstallAppBar": {
          "default": true,
          "format": "checkbox",
          "title": "Automatically Install AppBar",
          "description": "When enabled, Zappl automatically installs the AppBar menu bar application. Uncheck this option if you do not wish to use AppBar in your environment, or if you prefer to deploy AppBar manually.",
          "type": "boolean",
          "links": [
            {
              "rel": "More Information",
              "href": "https://docs.zappl.co/customise/preferences"
            }
          ]
        },
        "allowedAppInstalls": {
          "title": "Allowed Installs",
          "description": "By default, all apps within the Zappl App catalog are available for installation. If you prefer to specify a list of apps allowed for installation, enter the app identifiers below. You can specify as many unique identifiers as you wish, using the App Catalog unique identifiers for each app. App Catalog: www.zappl.co/app-catalog. Note: If you wish to allow installations for all apps within the catalog with the exception of a select few, skip configuring this setting and use the Excluded Installs setting instead. If you specify an app in this list that is also in the Excluded App Installs list, the exclusion will take precedence.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Allowed install App identifier"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "excludedAppInstalls": {
          "title": "Excluded Installs",
          "description": "By default, all apps within the Zappl App catalog are available for installation. If you wish to allow installations for all apps in the catalog with the exception of some apps, specify the apps you wish to exclude below. You can specify as many unique app identifiers as you wish, using the App Catalog unique identifiers for each app. App Catalog: www.zappl.co/app-catalog. Note: If you wish to only allow installations for specific apps within the catalog, skip this setting and instead use the Allowed Installs setting to create your allowed installs list. If you specify an app exclusion that is also in the Allowed Installs list, only the exclusion will be respected.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Excluded install App identifier"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "allowedAppUpdates": {
          "title": "Allowed Updates",
          "description": "By default, all apps within the Zappl App catalog will be updated if installed. If you prefer to specify a list of apps to allow updates for, enter the app identifiers below. You can specify as many unique identifiers as you wish, using the App Catalog unique identifiers for each app. App Catalog: www.zappl.co/app-catalog. Note: If you wish to allow updates for all apps within the catalog with the exception of a select few, skip configuring this setting and use the Excluded Updates setting instead. If you specify an app in this list that is also in the Excluded Updates list, the exclusion will take precedence.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Allowed update App identifier"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "excludedAppUpdates": {
          "title": "Excluded Updates",
          "description": "By default, all apps within the Zappl App catalog will be updated if installed. If you wish to allow updates for all apps in the catalog with the exception of some apps, specify the apps you wish to exclude below. You can specify as many unique app identifiers as you wish, using the App Catalog unique identifiers for each app. App Catalog: www.zappl.co/app-catalog. Note: If you wish to only allow updates for specific apps within the catalog, skip this setting and instead use the Allowed Updates setting to create your allowed update list. If you specify an exclusion app that is also in the Allowed App Updates list, only the exclusion will be respected.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Excluded update App identifier"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        }
      }
    },
    "ScheduledUpdates": {
      "type": "object",
      "title": "Scheduled Update Prompt Options",
      "properties": {
        "runFrequency": {
          "format": "grid",
          "properties": {
            "runType": {
              "default": "specifyFrequency",
              "enum": [
                "specifyFrequency",
                "specifyPatchDay"
              ],
              "options": {
                "enum_titles": [
                  "Specify Patch Frequency",
                  "Specify Recurring Patch Day"
                ]
              },
              "title": "Run Frequency Option",
              "description": "This defines when to prompt users to install pending updates. You can either limit user prompts to a specified weekly patch day, or select a frequency to prompt users (e.g., once every 2 weeks).",
              "type": "string",
              "propertyOrder": 1,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "frequencyOption": {
              "default": "oneWeek",
              "enum": [
                "oneDay",
                "oneWeek",
                "twoWeeks",
                "threeWeeks",
                "fourWeeks"
              ],
              "options": {
                "dependencies": {
                  "runType": "specifyFrequency"
                },
                "enum_titles": [
                  "Once every day",
                  "Once every week",
                  "Once every two weeks",
                  "Once every three weeks",
                  "Once every four weeks"
                ]
              },
              "title": "Frequency to prompt users",
              "description": "A recurring update frequency time window that determines how often users are prompted to install pending updates (e.g., once every week).",
              "type": "string",
              "minLength": 1,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "frequencyElapsedMode": {
              "default": "singlePromptMode",
              "enum": [
                "singlePromptMode",
                "recurringPromptMode"
              ],
              "options": {
                "dependencies": {
                  "runType": "specifyFrequency"
                },
                "enum_titles": [
                  "Single Prompt Mode",
                  "Recurring Prompt Mode"
                ]
              },
              "title": "Frequency Elapsed Behaviour",
              "description": "Determines how frequently users should be prompted if they defer the update once the configured patch frequency time has elapsed. Deferring updates with Single Prompt Mode enabled causes update prompts to be postponed until the patch frequency has elapsed again. Recurring Prompt Mode ensures users are prompted to update on a regular recurring interval after deferring until they update, and the patch frequency will only be reactivated after the updates are installed.",
              "type": "string",
              "minLength": 1,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "deferralWindow": {
              "title": "Recurring Prompt Mode Deferral Window (Patch Frequency)",
              "description": "When using recurring prompt mode, use this setting to define the amount of time in minutes a user can defer the update.",
              "type": "integer",
              "minimum": 1,
              "default": 60,
              "options": {
                "inputAttributes": {
                  "placeholder": "60"
                },
                "dependencies": {
                  "frequencyElapsedMode": "recurringPromptMode"
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "patchDay": {
              "default": 3,
              "title": "Patch Day",
              "type": "integer",
              "minLength": 1,
              "propertyOrder": 20,
              "description": "The day of the week to prompt users to install cached updates.",
              "enum": [
                2,
                3,
                4,
                5,
                6,
                7,
                1
              ],
              "options": {
                "enum_titles": [
                  "Monday",
                  "Tuesday",
                  "Wednesday",
                  "Thursday",
                  "Friday",
                  "Saturday",
                  "Sunday"
                ],
                "dependencies": {
                  "runType": "specifyPatchDay"
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "patchDayWeeks": {
              "title": "Week(s) of Month",
              "description": "Select which week(s) of the month to run the patch day. By default, all weeks are selected (every occurrence of the selected day). Uncheck any weeks you wish to skip.",
              "type": "object",
              "format": "grid",
              "properties": {
                "firstWeek": {
                  "default": true,
                  "format": "checkbox",
                  "title": "First Week of Month",
                  "description": "Run on the first occurrence of the selected day each month.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "secondWeek": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Second Week of Month",
                  "description": "Run on the second occurrence of the selected day each month.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thirdWeek": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Third Week of Month",
                  "description": "Run on the third occurrence of the selected day each month.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fourthWeek": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Fourth Week of Month",
                  "description": "Run on the fourth occurrence of the selected day each month.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fifthWeek": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Fifth Week of Month (if applicable)",
                  "description": "Run on the fifth occurrence of the selected day, when the month has five occurrences.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                }
              },
              "options": {
                "dependencies": {
                  "runType": "specifyPatchDay"
                }
              }
            },
            "patchDayFrequency": {
              "default": "singlePromptMode",
              "enum": [
                "singlePromptMode",
                "recurringPromptMode"
              ],
              "options": {
                "dependencies": {
                  "runType": "specifyPatchDay"
                },
                "enum_titles": [
                  "Single Prompt Mode",
                  "Recurring Prompt Mode"
                ]
              },
              "title": "Patch Day Prompt Frequency",
              "description": "Determines how often users should be prompted to update on the configured patch day if they defer the update. Use Single Prompt Mode to carry the deferral to the following weekly patch day, or use Recurring Prompt Mode to continue prompting users to update on a recurring interval on the configured patch day if they defer the update.",
              "type": "string",
              "minLength": 1,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "patchDayDeferralWindow": {
              "title": "Recurring Prompt Mode Deferral Window (Patch Day)",
              "description": "When using recurring prompt mode, use this setting to define the amount of time in minutes a user can defer the update before being prompted again.",
              "type": "integer",
              "minimum": 1,
              "default": 60,
              "options": {
                "inputAttributes": {
                  "placeholder": "60"
                },
                "dependencies": {
                  "patchDayFrequency": "recurringPromptMode"
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "missedUpdatePrompt": {
              "default": true,
              "description": "When enabled, Zappl will prompt the user to update whenever the device comes back online if it was offline on the defined patch day, or if the user deferred all update prompts when using Recurring Prompt Mode. Leave this unchecked to wait until the next patch day to prompt the user if their device was offline on the previous patch day.",
              "format": "checkbox",
              "title": "Missed Update Prompts",
              "type": "boolean",
              "options": {
                "dependencies": {
                  "runType": "specifyPatchDay"
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "runType"
          ],
          "title": "Run Frequency Options",
          "type": "object"
        },
        "runLimitations": {
          "title": "Run Limitation Options",
          "description": "Use this preference to limit which weekdays and times Zappl is allowed to prompt users to install pending updates. Check the boxes next to any days you wish to allow Zappl to prompt users, and uncheck any days you want update prompts to be skipped. If you allow Zappl to run on a particular day, you can limit runs to a specific time window using the start and end time fields. Note: If you have specified a weekly patch day and that day is not checked below, the patch day setting will take precedence.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "object",
              "format": "grid",
              "properties": {
                "monday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Monday",
                  "description": "If selected, update prompts will be allowed on Mondays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "mondayStartTime": {
                  "description": "If you allowed updates on Mondays, use this to define the time on a Monday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Monday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "mondayEndTime": {
                  "description": "If you allowed updates on Mondays, use this to define the time on a Monday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Monday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Tuesday",
                  "description": "If selected, update prompts will be allowed on Tuesdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesdayStartTime": {
                  "description": "If you allowed updates on Tuesdays, use this to define the time on a Tuesday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Tuesday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesdayEndTime": {
                  "description": "If you allowed updates on Tuesdays, use this to define the time on a Tuesday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Tuesday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Wednesday",
                  "description": "If selected, update prompts will be allowed on Wednesdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesdayStartTime": {
                  "description": "If you allowed updates on Wednesdays, use this to define the time on a Wednesday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Wednesday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesdayEndTime": {
                  "description": "If you allowed updates on Wednesdays, use this to define the time on a Wednesday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Wednesday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Thursday",
                  "description": "If selected, update prompts will be allowed on Thursdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursdayStartTime": {
                  "description": "If you allowed updates on Thursdays, use this to define the time on a Thursday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Thursday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursdayEndTime": {
                  "description": "If you allowed updates on Thursdays, use this to define the time on a Thursday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Thursday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "friday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Friday",
                  "description": "If selected, update prompts will be allowed on Fridays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fridayStartTime": {
                  "description": "If you allowed updates on Fridays, use this to define the time on a Friday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Friday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fridayEndTime": {
                  "description": "If you allowed updates on Fridays, use this to define the time on a Friday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Friday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Saturday",
                  "description": "If selected, update prompts will be allowed on Saturdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturdayStartTime": {
                  "description": "If you allowed updates on Saturdays, use this to define the time on a Saturday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Saturday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturdayEndTime": {
                  "description": "If you allowed updates on Saturdays, use this to define the time on a Saturday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Saturday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sunday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Sunday",
                  "description": "If selected, update prompts will be allowed on Sundays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sundayStartTime": {
                  "description": "If you allowed updates on Sundays, use this to define the time on a Sunday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Sunday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sundayEndTime": {
                  "description": "If you allowed updates on Sundays, use this to define the time on a Sunday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Sunday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "deferralConfiguration": {
          "format": "grid",
          "properties": {
            "deferralOption": {
              "default": "specifyDeferralLimit",
              "enum": [
                "disableDeferralLimit",
                "specifyDeferralLimit",
                "disableDeferrals"
              ],
              "options": {
                "enum_titles": [
                  "Disable Deferral Limit",
                  "Specify Deferral Limit",
                  "Disable Deferrals"
                ]
              },
              "title": "Select a Deferral Option",
              "description": "Use this to define behaviour around update deferrals. To allow the user to continue deferring with no limit and force the update on-demand, select Disable Deferral Limit. To set a limit on the amount of allowed deferrals, select Specify Deferral Limit. Alternatively, you can disable deferrals completely by selecting Disable Deferrals, which will only allow a grace period for updates.",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "specifyLimit": {
              "options": {
                "dependencies": {
                  "deferralOption": "specifyDeferralLimit"
                }
              },
              "title": "Deferral Limit",
              "description": "Specify a custom deferral limit. The default deferral limit if not specified is 2.",
              "type": "integer",
              "minimum": 1,
              "default": 2,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "deferralOption"
          ],
          "title": "Deferral Options",
          "type": "object"
        },
        "gracePeriodMinutes": {
          "title": "Grace Period in Minutes",
          "description": "The amount of time a user is given to save work before updates are installed automatically when there are no remaining deferrals. Default is 15 minutes.",
          "options": {
            "inputAttributes": {
              "placeholder": "15"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "integer",
              "minimum": 1,
              "default": 15,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customIcon": {
          "title": "Icon",
          "description": "A custom icon to be displayed on the user prompts. The default is the Self Service icon.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "initialPromptOverlayIcon": {
          "title": "Initial Prompt Icon Overlay",
          "description": "An icon overlay on the initial update prompts. The overlay is displayed on the bottom right of the main icon. Possible values are paths to a valid .png, .jpg, or .icns file, or use the selfService variable for the Jamf Self Service icon.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customInitialPromptSize": {
          "title": "Initial Prompt Size",
          "description": "Use this to customize the size of the initial prompt displayed to users when they can either defer or update. Note: Only configure this setting if defining custom prompt messages. If you are using the default prompt messages, customizing prompt size is not recommended as the default prompt size is pre-configured to correctly match the size of the default message displayed.",
          "properties": {
            "promptHeight": {
              "description": "Use this to define a custom height in points for the prompts shown to users (e.g., 330).",
              "title": "Prompt height",
              "minimum": 1,
              "default": 330,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "promptWidth": {
              "description": "Use this to define a custom width in points for the prompts shown to users (e.g., 640).",
              "title": "Prompt width",
              "minimum": 1,
              "default": 640,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "promptHeight",
            "promptWidth"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customGracePromptSize": {
          "title": "Grace Period Prompt Size",
          "description": "Use this to customize the size of the grace period timer prompt shown when users have no remaining deferrals. Note: Only configure this setting if defining custom prompt messages. If you are using the default prompt messages, customizing prompt size is not recommended as the default prompt size is pre-configured to correctly match the size of the default message displayed.",
          "properties": {
            "promptHeight": {
              "description": "Use this to define a custom height in points for the prompts shown to users (e.g., 330).",
              "title": "Prompt height",
              "minimum": 1,
              "default": 330,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "promptWidth": {
              "description": "Use this to define a custom width in points for the prompts shown to users (e.g., 640).",
              "title": "Prompt width",
              "minimum": 1,
              "default": 640,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "promptHeight",
            "promptWidth"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customSelfServicePromptSize": {
          "title": "Self Service Prompt Size",
          "description": "Use this to customize the size of the prompt displayed to users when they initiate a Self Service update. Note: Only configure this setting if defining custom prompt messages. If you are using the default prompt messages, customizing prompt size is not recommended as the default prompt size is pre-configured to correctly match the size of the default message displayed.",
          "properties": {
            "promptHeight": {
              "description": "Use this to define a custom height in points for the prompts shown to users (e.g., 330).",
              "title": "Prompt height",
              "minimum": 1,
              "default": 330,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "promptWidth": {
              "description": "Use this to define a custom width in points for the prompts shown to users (e.g., 640).",
              "title": "Prompt width",
              "minimum": 1,
              "default": 640,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "promptHeight",
            "promptWidth"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "singleAppTitle": {
          "title": "Single App Prompt Title",
          "description": "A custom title to be displayed on the user prompts when there is 1 pending app update.",
          "options": {
            "inputAttributes": {
              "placeholder": "appName Update Available"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "multipleAppsTitle": {
          "title": "Multiple Apps Prompt Title",
          "description": "A custom title to be displayed on the user prompts when there is more than 1 pending app update.",
          "options": {
            "inputAttributes": {
              "placeholder": "Important Updates Available"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "singleInitialQuitPromptMessage": {
          "title": "Single App Initial Prompt Message",
          "description": "A custom message displayed on the initial \"App needs to quit\" prompt shown when there is 1 pending app update.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, An important update is pending which requires the App to quit..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "multipleInitialQuitPromptMessage": {
          "title": "Multiple Apps Initial Prompt Message",
          "description": "A custom message displayed on the initial \"Apps need to quit\" prompt shown when there are multiple pending app updates.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Important updates are pending which require Apps to quit..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "singleSelfServiceQuitMessage": {
          "title": "Single App Self Service Prompt Message",
          "description": "A custom message displayed on the initial \"App needs to quit\" prompt shown when a user manually initiates an update check and there is 1 pending update.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, An important update is pending which requires the App to quit..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "multipleSelfServiceQuitMessage": {
          "title": "Multiple App Self Service Prompt Message",
          "description": "A custom message displayed on the initial \"Apps need to quit\" prompt shown when a user manually initiates an update check and there are multiple pending app updates.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Important updates are pending which require Apps to quit..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "singleAppGracePeriodQuitMessage": {
          "title": "Single App Grace Period Prompt Message",
          "description": "A custom message displayed on the \"App needs to quit\" grace period prompt shown when there is 1 pending update. This prompt shows a grace period timer and is displayed when no deferrals are remaining or configured.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Please save your work and click update..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "multipleAppGracePeriodQuitMessage": {
          "title": "Multiple Apps Grace Period Prompt Message",
          "description": "A custom message displayed on the \"Apps need to quit\" grace period prompt shown when there are multiple pending updates. This prompt shows a grace period timer and is displayed when no deferrals are remaining or configured.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Please save your work and click update..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customDeferButton": {
          "title": "Defer Button Label",
          "description": "A custom Defer button label displayed on prompts where deferrals are allowed.",
          "options": {
            "inputAttributes": {
              "placeholder": "Defer"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customSkipButton": {
          "title": "Self Service Skip Button Label",
          "description": "A custom Skip button label displayed on the Self Service update prompts that allows users to back out of installing updates without affecting deferrals.",
          "options": {
            "inputAttributes": {
              "placeholder": "Skip"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customUpdateButton": {
          "title": "Update Button Label",
          "description": "A custom Update button label displayed on the update prompts.",
          "options": {
            "inputAttributes": {
              "placeholder": "Update"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "appListType": {
          "title": "App List Type",
          "description": "Determines how to display the list of apps on the update prompts. Apps can either be displayed in a vertical scrollable list beneath the prompt message, or displayed horizontally as part of the prompt message. When using the horizontal list option, the list of apps is stored in the appList variable.",
          "options": {
            "enum_titles": [
              "Vertical List",
              "Horizontal List"
            ]
          },
          "default": "",
          "enum": [
            "vertical",
            "horizontal"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "refreshInterval": {
          "title": "Prompt Refresh Interval",
          "description": "The amount of time in seconds the user prompts refresh. The prompts require a refresh to pull focus if the user swipes away to ignore the prompt and ensures they either select defer or update. The default value is 60 seconds. The minimum allowed value is 30 seconds.",
          "options": {
            "inputAttributes": {
              "placeholder": "60"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "integer",
              "minimum": 30,
              "default": 60,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableAppBundleIDs": {
          "title": "Do Not Disturb Applications",
          "description": "Application Bundle IDs specified here will prevent Zappl from prompting users to update if the app(s) are identified as being active in the foreground (you can specify one or more Bundle IDs). To get Bundle IDs, enter the following in Terminal (replacing Safari with the relevant app): defaults read /Applications/Safari.app/Contents/Info.plist CFBundleIdentifier",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Do Not Disturb Application Bundle ID"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableAppAssertions": {
          "title": "Do Not Disturb Application Assertions",
          "description": "Application names specified here will prevent Zappl from prompting users to update if the app(s) are identified as using assertions (you can specify one or more application names). To get the required application name format, run \"/usr/bin/pmset -g assertions\" in Terminal while the application is running and using assertions.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "Google Chrome"
                  }
                },
                "type": "string",
                "title": "Do Not Disturb Application Assertion Name"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableDNDMode": {
          "title": "Respect Do Not Disturb Mode",
          "description": "Setting as True will prevent Zappl from prompting users if Do Not Disturb mode is detected.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableCameraUsage": {
          "title": "Do Not Disturb Camera Usage",
          "description": "Setting as True will prevent Zappl from prompting users if the camera is in use. Note: Apple Silicon Macs running macOS 12 (Monterey) do not accurately report camera usage; therefore, this setting will be ignored. Upgrading to macOS 13 (Ventura) will resolve this issue for Apple Silicon Macs.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableScreenSharing": {
          "title": "Do Not Disturb Screen Sharing",
          "description": "Setting as True will prevent Zappl from prompting users if Screen Sharing is in use.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressPosition": {
          "title": "Update Progress Prompt Position",
          "description": "The position on the screen of the prompt that displays the progress of an update. The default position is top right.",
          "options": {
            "enum_titles": [
              "Top right",
              "Right",
              "Bottom right",
              "Top left",
              "Left",
              "Bottom left",
              "Top centre",
              "Centre",
              "Bottom centre"
            ]
          },
          "default": "",
          "enum": [
            "topright",
            "right",
            "bottomright",
            "topleft",
            "left",
            "bottomleft",
            "top",
            "center/centre",
            "bottom"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressPrompt": {
          "title": "Update Progress Prompt Behaviour",
          "description": "Determines the behaviour of the prompt shown when updates are in progress. You can either select a prompt that does not take focus over other running apps (default), a prompt that does take focus over all other running apps, or disable the progress prompt completely. If you choose to show no prompt, you can still enable the \"Display Complete Message\" setting to inform users when the update has finished.",
          "options": {
            "enum_titles": [
              "Prompt without focus",
              "Prompt with focus",
              "Don't show a prompt"
            ]
          },
          "default": "",
          "enum": [
            "noFocusPrompt",
            "focusPrompt",
            "noPrompt"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressOverlayIcon": {
          "title": "Update Progress Prompt Overlay Icon",
          "description": "An icon overlay on the prompt shown during app updates. The overlay is displayed on the bottom right of the main icon, which on this prompt is the app icon. Possible values are paths to a valid .png, .jpg, or .icns file, or use the selfService variable for the Jamf Self Service icon.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "autoRelaunchApps": {
          "title": "Automatically Relaunch Apps",
          "description": "Determines whether Zappl automatically relaunches apps that were running prior to updating once the update completes.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "displayCompletePrompt": {
          "title": "Display Complete Message",
          "description": "Determines whether a prompt is displayed to the user to inform them that the updates are complete. The prompt will inherit the same window position as the Update Progress prompt. Default is true.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        }
      }
    },
    "ForcedUpdates": {
      "type": "object",
      "title": "Forced Update Prompt Options",
      "properties": {
        "runLimitations": {
          "title": "Run Limitation Options",
          "description": "Use this preference to limit which weekdays and times Zappl is allowed to prompt users to install forced updates. Check the boxes next to any days you wish to allow Zappl to prompt users, and uncheck any days you want update prompts to be skipped. If you allow Zappl to run on a particular day, you can limit runs to a specific time window using the start and end time fields. Note: If you have specified a weekly patch day and that day is not checked below, the patch day setting will take precedence.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "object",
              "format": "grid",
              "properties": {
                "monday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Monday",
                  "description": "If selected, forced update prompts will be allowed on Mondays",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "mondayStartTime": {
                  "description": "If you allowed forced updates on Mondays, use this to define the time on a Monday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Monday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "mondayEndTime": {
                  "description": "If you allowed forced updates on Mondays, use this to define the time on a Monday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Monday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Tuesday",
                  "description": "If selected, update prompts will be allowed on Tuesdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesdayStartTime": {
                  "description": "If you allowed forced updates on Tuesdays, use this to define the time on a Tuesday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Tuesday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "tuesdayEndTime": {
                  "description": "If you allowed forced updates on Tuesdays, use this to define the time on a Tuesday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Tuesday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Wednesday",
                  "description": "If selected, update prompts will be allowed on Wednesdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesdayStartTime": {
                  "description": "If you allowed forced updates on Wednesdays, use this to define the time on a Wednesday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Wednesday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "wednesdayEndTime": {
                  "description": "If you allowed forced updates on Wednesdays, use this to define the time on a Wednesday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Wednesday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Thursday",
                  "description": "If selected, update prompts will be allowed on Thursdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursdayStartTime": {
                  "description": "If you allowed forced updates on Thursdays, use this to define the time on a Thursday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Thursday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "thursdayEndTime": {
                  "description": "If you allowed forced updates on Thursdays, use this to define the time on a Thursday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Thursday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "friday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Friday",
                  "description": "If selected, update prompts will be allowed on Fridays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fridayStartTime": {
                  "description": "If you allowed forced updates on Fridays, use this to define the time on a Friday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Friday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "fridayEndTime": {
                  "description": "If you allowed forced updates on Fridays, use this to define the time on a Friday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Friday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Saturday",
                  "description": "If selected, update prompts will be allowed on Saturdays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturdayStartTime": {
                  "description": "If you allowed forced updates on Saturdays, use this to define the time on a Saturday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Saturday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "saturdayEndTime": {
                  "description": "If you allowed forced updates on Saturdays, use this to define the time on a Saturday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Saturday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sunday": {
                  "default": true,
                  "format": "checkbox",
                  "title": "Sunday",
                  "description": "If selected, update prompts will be allowed on Sundays.",
                  "type": "boolean",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sundayStartTime": {
                  "description": "If you allowed forced updates on Sundays, use this to define the time on a Sunday when Zappl is permitted to start prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Sunday Start Time",
                  "minimum": 1,
                  "default": "00:00",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                },
                "sundayEndTime": {
                  "description": "If you allowed forced updates on Sundays, use this to define the time on a Sunday when Zappl should stop prompting users to install pending updates. This should be in 24-hour format (e.g., 09:00 for 9am, or 21:00 for 9pm).",
                  "title": "Sunday End Time",
                  "minimum": 1,
                  "default": "23:59",
                  "type": "string",
                  "pattern": "^([01]\\d|2[0-3]):?([0-5]\\d)$",
                  "links": [
                    {
                      "rel": "More Information",
                      "href": "https://docs.zappl.co/customise/preferences"
                    }
                  ]
                }
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customIcon": {
          "title": "Icon",
          "description": "A custom icon to be displayed on the user prompts. The default when not specified is the icon of the app being forced to update.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "initialPromptOverlayIcon": {
          "title": "Initial Prompt Overlay Icon",
          "description": "An icon overlay on the initial or grace period update prompts. The overlay is displayed on the bottom right of the main icon, which on this prompt is the app icon. Possible values are paths to a valid .png, .jpg, or .icns file, or use the selfService variable for the Jamf Self Service icon.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customInitialPromptSize": {
          "title": "Initial Prompt Size",
          "description": "Use this to customize the size of the initial prompt displayed to users when they can either defer or update. Note: Only configure this setting if defining custom prompt messages. If you are using the default prompt messages, customizing prompt size is not recommended as the default prompt size is pre-configured to correctly match the size of the default message displayed.",
          "properties": {
            "promptHeight": {
              "description": "Use this to define a custom height in points for the prompts shown to users (e.g., 330).",
              "title": "Prompt height",
              "minimum": 1,
              "default": 330,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "promptWidth": {
              "description": "Use this to define a custom width in points for the prompts shown to users (e.g., 640).",
              "title": "Prompt width",
              "minimum": 1,
              "default": 640,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "promptHeight",
            "promptWidth"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customGracePromptSize": {
          "title": "Grace Period Prompt Size",
          "description": "Use this to customize the size of the grace period timer prompt shown when users have no remaining deferrals. Note: Only configure this setting if defining custom prompt messages. If you are using the default prompt messages, customizing prompt size is not recommended as the default prompt size is pre-configured to correctly match the size of the default message displayed.",
          "properties": {
            "promptHeight": {
              "description": "Use this to define a custom height in points for the prompts shown to users (e.g., 330).",
              "title": "Prompt height",
              "minimum": 1,
              "default": 330,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            },
            "promptWidth": {
              "description": "Use this to define a custom width in points for the prompts shown to users (e.g., 640).",
              "title": "Prompt width",
              "minimum": 1,
              "default": 640,
              "type": "integer",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          },
          "required": [
            "promptHeight",
            "promptWidth"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customTitle": {
          "title": "Title",
          "description": "A custom title to be displayed on the initial force update prompts that are shown prior to the updates running (e.g., the defer/update prompt if configured, or the grace period prompt).",
          "options": {
            "inputAttributes": {
              "placeholder": "appName Update Required"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "initialQuitPromptMessage": {
          "title": "Initial Prompt Message",
          "description": "A custom message displayed on the initial \"App needs to quit\" forced update prompt.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Important updates are pending which require Apps to quit..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "gracePeriodQuitPromptMessage": {
          "title": "Grace Period Quit Prompt Message",
          "description": "A custom message displayed on the grace period \"App needs to quit\" prompt. This prompt shows a grace period timer and is displayed when no deferrals are remaining or configured.",
          "options": {
            "inputAttributes": {
              "placeholder": "E.g, Please save your work and click update..."
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customDeferButton": {
          "title": "Defer Button Label",
          "description": "A custom Defer button label displayed on prompts where deferrals are allowed.",
          "options": {
            "inputAttributes": {
              "placeholder": "Defer"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "customUpdateButton": {
          "title": "Update Button Label",
          "description": "A custom Update button label displayed on the update prompts.",
          "options": {
            "inputAttributes": {
              "placeholder": "Update"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "refreshInterval": {
          "title": "Prompt Refresh Interval",
          "description": "The amount of time in seconds the user prompts refresh when deferrals have been configured for forced updates. The prompts require a refresh to pull focus if the user swipes away to ignore the prompt and ensures they either select defer or update. The default value is 60 seconds. The minimum allowed value is 30 seconds.",
          "options": {
            "inputAttributes": {
              "placeholder": "60"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "integer",
              "minimum": 30,
              "default": 60,
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableAppBundleIDs": {
          "title": "Do Not Disturb Applications",
          "description": "Application Bundle IDs specified here will prevent Zappl from prompting users to update if the app(s) are identified as being active in the foreground (you can specify one or more Bundle IDs). To get Bundle IDs, enter the following in Terminal (replacing Safari with the relevant app): defaults read /Applications/Safari.app/Contents/Info.plist CFBundleIdentifier",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "us.zoom.xos"
                  }
                },
                "type": "string",
                "title": "Do Not Disturb Application Bundle ID"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableAppAssertions": {
          "title": "Do Not Disturb Application Assertions",
          "description": "Application names specified here will prevent Zappl from prompting users to update if the app(s) are identified as using assertions (you can specify one or more application names). To get the required application name format, run \"/usr/bin/pmset -g assertions\" in Terminal while the application is running and using assertions.",
          "anyOf": [
            {
              "title": "Not Configured",
              "type": "null"
            },
            {
              "title": "Configured",
              "type": "array",
              "items": {
                "options": {
                  "inputAttributes": {
                    "placeholder": "Google Chrome"
                  }
                },
                "type": "string",
                "title": "Do Not Disturb Application Assertion Name"
              },
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableDNDMode": {
          "title": "Respect Do Not Disturb Mode",
          "description": "Setting as True will prevent Zappl from prompting users if Do Not Disturb mode is detected.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableCameraUsage": {
          "title": "Do Not Disturb Camera Usage",
          "description": "Setting as True will prevent Zappl from prompting users if the camera is in use. Note: Apple Silicon Macs running macOS 12 (Monterey) do not accurately report camera usage; therefore, this setting will be ignored. Upgrading to macOS 13 (Ventura) will resolve this issue for Apple Silicon Macs.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "acceptableScreenSharing": {
          "title": "Do Not Disturb Screen Sharing",
          "description": "Setting as True will prevent Zappl from prompting users if Screen Sharing is in use.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressPosition": {
          "title": "Update Progress Prompt Position",
          "description": "The position on the screen of the prompt that displays the progress of an update.",
          "options": {
            "enum_titles": [
              "Top right",
              "Right",
              "Bottom right",
              "Top left",
              "Left",
              "Bottom left",
              "Top centre",
              "Centre",
              "Bottom centre"
            ]
          },
          "default": "",
          "enum": [
            "topright",
            "right",
            "bottomright",
            "topleft",
            "left",
            "bottomleft",
            "top",
            "center/centre",
            "bottom"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressPrompt": {
          "title": "Update Progress Prompt Behaviour",
          "description": "Determines the behaviour of the prompt shown when updates are in progress. You can either select a prompt that does not take focus over other running apps (default), a prompt that does take focus over all other running apps, or disable the progress prompt completely. If you choose to show no prompt, you can still enable the \"Display Complete Message\" setting to inform users when the update has finished.",
          "options": {
            "enum_titles": [
              "Prompt without focus",
              "Prompt with focus",
              "Don't show a prompt"
            ]
          },
          "default": "",
          "enum": [
            "noFocusPrompt",
            "focusPrompt",
            "noPrompt"
          ],
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "updateProgressOverlayIcon": {
          "title": "Update Progress Prompt Overlay Icon",
          "description": "An icon overlay on the prompt shown during app updates. The overlay is displayed on the bottom right of the main icon, which on this prompt is the app icon. Possible values are paths to a valid .png, .jpg, or .icns file, or use the selfService variable for the Jamf Self Service icon.",
          "options": {
            "inputAttributes": {
              "placeholder": "/usr/local/images/CustomIcon.png"
            }
          },
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "string",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "autoRelaunchApps": {
          "title": "Automatically Relaunch Apps",
          "description": "Determines whether Zappl automatically relaunches apps that were running prior to updating once the update completes.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        },
        "displayCompletePrompt": {
          "title": "Display Complete Message",
          "description": "Determines whether a prompt is displayed to the user to inform them that the updates are complete. The prompt will inherit the same window position as the Update Progress prompt. Default is true.",
          "anyOf": [
            {
              "type": "null",
              "title": "Not Configured"
            },
            {
              "title": "Configured",
              "type": "boolean",
              "links": [
                {
                  "rel": "More Information",
                  "href": "https://docs.zappl.co/customise/preferences"
                }
              ]
            }
          ]
        }
      }
    }
  },
  "links": [
    {
      "rel": "More Information",
      "href": "https://docs.zappl.co/customise/preferences"
    }
  ]
}