JSON Schema Manifest Structure

You can use a plain text editor to create the JSON Schema manifest for your app and use a third-party validating tool to validate your formatting, such as https://jsonlint.com.

For official documentation and more information about JSON Schema, see the following website: https://json-schema.org

Note:

This section uses a sample app called "Disk Manager" for example purposes. Adding the JSON Schema manifest for this app to Jamf Pro demonstrates the variety of properties that Jamf Pro can populate to enable you to customize your app using the Jamf Pro interface.

Jamf Pro Interface

After you add the JSON Schema manifest to Jamf Pro, Jamf Pro automatically generates a user-friendly view of the property list in the Jamf Pro interface to allow you to customize the app similar to the following:

Application Properties

The contents of an app manifest contain a header followed by a list of application properties. Each property contains a key-value pair. When these key-value pairs are defined and the manifest is added to Jamf Pro, Jamf Pro automatically generates a user-friendly view of the property list in the Jamf Pro interface to allow you to customize the app.

Each property defined in the JSON Schema manifest contains the following elements:
  • Key Name

    This is the name of the property.

  • title

    This value defines the name of the property.

  • description

    This value defines is the description of the property.

  • property_order

    This value defines the numerical order of the property in the list from top to bottom. Lower numbers appear at the top.

  • type

    This value defines the type of value in the property (e.g., "integer").

    For a list of the types of values and their implementation in Jamf Pro, see JSON Value Types.

The following table displays a sample JSON Schema manifest for the sample app "Disk Manager", divided into a header and multiple application properties. Each row in the table demonstrates how to generate the form and provides a description of the setting generated by Jamf Pro.

Key-Value PairSetting Generated by Jamf Pro
{

"title": "Disk Manager (net.talkingmoose.diskmanager)",

"description": "Preference settings for the Disk Manager application",

"properties": {

Header

The header includes the title of the manifest and a description. It can also include useful information such as the app domain (bundle identifier).

"askForPasswordDelay": {

"title": "Ask For Password Delay",

"description": "Disk Manager will wait the selected amount of time before requiring a password.",

"property_order": 5,

"type": "integer",

"options": {

"enum_titles": ["immediately", "5 seconds", "1 Minute", "5 Minutes", "15 Minutes", "1 Hour", "4 hours", "8 hours"]

},

"enum": [0,5,60,300,900,3600,14400,28800]

},

Property 1

The type in this property defines the value as an integer and includes pre-defined options for the property (defined in the enum_titles key-value pair).

Defining values for the enum_type enables Jamf Pro to generate this setting as a pop-up menu with options based on those values.

 	

"diskCacheSize": {

"title": "Disk Cache Size",

"description": "Set disk cache size, in bytes.",

"property_order": 10,

"type": "integer"

},

Property 2

The type in this property defines the value as an integer but does not include a group of pre-defined options. Jamf Pro generates this setting as a text field where you can enter an integer.

"primaryServer": {

"title": "Primary Server",

"description": "Disk Manager will default to this server.",

"property_order": 15,

"type": "string",

"options": {

"enum_titles": ["Server 1", "Server 2", "Server 3"]

},

"enum": ["https://server1.talkingmoose.net/", "https://server2.talkingmoose.net/", " https://server3.talkingmoose.net/" ]

},

Property 3

The type in this property defines the value as a string and includes pre-defined options as values for the property (defined in the enum_titles key-value pair). Defining values for the enum_type enables Jamf Pro to generate this setting as a pop-up menu with options based on those values.

"downloadDirectory": {

"title": "Download Directory",

"description": "Choose the default location for downloading working files.",

"property_order": 20,

"type": "string"

},

Property 4

The type in this property defines the value as a string but does not include a group of pre-defined options. Jamf Pro generates this setting as a text field where you can enter text.

"askForPassword": {

"title": "Ask For Password",

"description": "Set Disk Manager application to require a password.",

"property_order": 25,

"type": "boolean"

},

Property 5

The type in this property defines the value as a boolean. Jamf Pro generates this setting as a pop-up menu with the options of "true" or "false".

"domainSafeList": {

"title": "Domain Safelist",

"description": "Disk Manager will not filter these domains.",

"property_order": 30,

"type": "array",

"items": {

"type": "string",

"title": "Domain"

}

},

Property 6

The type in this property defines the value as array with the items in the array defined as string. Jamf Pro generates this setting as a list of one or more text fields where you can enter data.

"serverList": {

            "title": "Server List",

            "description": "Add servers to management list.",

            "property_order": 35,

            "type": "array",

            "items": {

                "type": "object",

                "properties": {

                    "serverAddress": {

                        "title": "Hostname",

                        "type": "string"

                    },

                    "macAddress": {

                        "title": "MAC Address",

                        "type": "string"

                    },

                    "ipAddress": {

                        "title": "IP Address",

                        "type": "string"

                    }

                }

            }

        }

Property 7

The type in this property defines the value as array with one or more dictionaries, each with sub-properties defined as string.

Jamf Pro generates this setting as a list of text fields where you can provide information for multiple items in the list. Each additional field in the list is dependent on how many additional sub-properties you define.

Note:

The last property defined in the manifest does not include a separating comma following the last brace ("}").

Jamf Pro Interface

After you add the JSON Schema manifest to Jamf Pro, Jamf Pro automatically generates a user-friendly view of the property list in the Jamf Pro interface to allow you to customize the app similar to the following: