Understanding the Structure of a JSON Schema Manifest

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.

The general format of an app manifest looks similar to the JSON Schema manifest outlined in the following website:
https://support.google.com/chrome/a/answer/9771882

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

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 element defines the name of the property.

  • description—This element defines is the description of the property.

  • property_order—This element defines the numerical order of the property in the list from top to bottom. Lower numbers appear at the top.

  • type—This element 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 Appendix: Configurable Settings.

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 an illustration for the form that is displayed in Jamf Pro.

Application Property

Key-Value Pair

Setting Generated by Jamf Pro

Header

{

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

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

"properties": {

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

Property 1

"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]

},

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.

Property 2

"diskCacheSize": {

"title": "Disk Cache Size",

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

"property_order": 10,

"type": "integer"

},

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.

Property 3

"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"/]

},

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.

Property 4

"downloadDirectory": {

"title": "Download Directory",

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

"property_order": 20,

"type": "string"

},

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.

Property 5

"askForPassword": {

"title": "Ask For Password",

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

"property_order": 25,

"type": "boolean"

},

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".

Property 6

"domainSafeList": {

"title": "Domain Safelist",

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

"property_order": 30,

"type": "array",

"items": {

"type": "string",

"title": "Domain"

}

},

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.

Property 7

"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"

}

}

}

}

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:

images/download/attachments/80756546/Screen_Shot_2020-04-09_at_9.04.16_AM.png

Copyright     Privacy Policy     Terms of Use     Security
© copyright 2002-2020 Jamf. All rights reserved.