name | Yes | The unique developer name of the template. If changed, it creates a new template; if it’s changed to an existing template devName, it overwrites the existing template. |
label | Yes | The template name visible to users in the Analytics template picker and wizard. |
description | No | The template description. Shown in the app creation wizard template picker. |
icons | No | Three icon types are available: templateBadge, appBadge, and templatePreviews. If images are stored as static resources and the org uses a namespace, specify a namespace attribute for each icon. |
tags | No | Array of tags used in template search and shown on template details page. |
assetVersion | Yes | Refers to the numbered API version to use when creating Analytics assets, such as dashboards, datasets, XMDs, and dataflows. Recipes are always on the current API version. To update this version, see Update an Existing Template. |
releaseInfo | Yes | Container attribute only. |
releaseInfo → templateVersion | Yes | The version of the template, tracked for the upgrade process. Calling wave/templates PUT automatically increments this number, but it can be changed manually as well. The format is ##.##, although it’s a string. |
releaseInfo → notesFile | No | A template dev defined HTML file to describe new release details. Basic HTML formatting is supported, but not links or javascript. Defaults to using the template description as release notes if file isn’t specified. |
rules | No | Container attribute only - can contain 1 or more rule file definitions (loaded first to last and order matters for dependencies). |
rules → type | Yes, if rules is used. | appToTemplate applies rules when updating the template from the source app (Rest API PUT call). templateToApp applies rules when creating an app from a template. |
rules → file | Yes | Path to the rules file. |
templateType | Yes | Can specify either app, embeddedapp, data, or dashboard. |
uiDefinition | No | Path the ui.json file. |
variableDefinition | No | Path to the variables.json file. |
folderDefinition | No | Path to the folder.json file. |
autoInstallDefinition | Yes for auto-installed templates, No for templates that use the configuration wizard | Path to the auto-install.json file. Only specify this file for auto-install templates. |
readinessDefinition | No | Path to the orgReadiness.json file. |
apexCallback | No | Container attribute only. Registers an Apex class that runs on wizard load, app create, and app upgrade. The Apex class examines the org and sets variable values. For example, the Sales Analytics template uses an Apex class to check whether the org uses the Products object. If it doesn’t, the has_product variable is set to no. |
apexCallback → namespace | Yes, if apexCallback is used and org uses namespace. | The namespace for the org, if it has one. Required for Apex classes in the development org or packaged with the template. |
apexCallback → name | Yes | The name of the Apex class to be used. |
customAttributes | No | Specifies information describing your template in the app creation wizard, such as Salesforce objects used or notable features. Takes a label and an array of values. |
dashboards | No | Container attribute only. Array of dashboard JSON files to be used, can be empty if there are no dashboard files. |
dashboards → file | Yes, if dashboards is used. Otherwise no. | Path to the dashboard file. |
dashboards → label | Yes, if dashboards is used. Otherwise no. | The dashboard label. Must match the “label” attribute in the dashboard file |
dashboards → name | Yes, if dashboards is used. Otherwise no. | The dashboard name. Must match the “name” attribute in the dashboard file. |
dashboards → condition | No | If condition is met, then the dashboard is created in the app; if the condition isn’t met, the dashboard isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types. |
dashboards → overwriteOnUpgrade | No | Indicates if asset is overwritten during the reset/upgrade process. Uses Always, IfDifferent, Never, or an expression that evaluates to one these values. Case sensitive. Example: "overwriteOnUpgrade": "${Variables.DontOverwriteQuota ? 'Never' : 'IfDifferent'}", |
lenses | No | Container attribute only - array of dashboard JSON files to be used, can be empty if there are no dashboard files. |
lenses → file | Yes, if lenses is used. Otherwise no. | Path to the lens file. |
lenses → label | Yes, if lenses is used. Otherwise no. | The lens label. Must match the “label” attribute in the lens file. |
lenses → name | Yes, if lenses is used. Otherwise no. | The lens name. Must match the “name” attribute in the lens file. |
lenses → condition | No | If the condition is met, then the lens is created in the app; if the condition isn’t met, the dashboard isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types |
lenses → overwriteOnUpgrade | No | Indicates if asset is overwritten during the reset/upgrade process. Uses Always, IfDifferent, Never, or an expression that evaluates to one these values. Case sensitive. Example: "overwriteOnUpgrade": "${Variables.DontOverwriteQuota ? 'Never' : 'IfDifferent'}", |
eltDataflows | No | Container attribute only – array of dataflow JSON files to be used, can be empty if there are no dataflow files. |
eltDataflows → file | Yes, if eltDataflows is used. Otherwise no. | Path to the dataflow file. |
eltDataflows → label | Yes, if eltDataflows is used. Otherwise no. | The dataflow label. Must match the sourceLabel attribute in dataflow file. |
eltDataflows → name | Yes, if eltDataflows is used. Otherwise no. | The dataflow name. Must match the name attribute in the dataflow file. |
eltDataflows → condition | No | If condition is met, then the dataflow is created in the app; if the condition isn’t met, the dataflow isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types |
eltDataflows → overwriteOnUpgrade | No | Indicates if asset is overwritten during the reset/upgrade process. Uses Always, IfDifferent, Never, or an expression that evaluates to one these values. Case sensitive. Example: "overwriteOnUpgrade": "${Variables.DontOverwriteQuota ? 'Never' : 'IfDifferent'}", |
recipes | No | Container attribute only – array of recipes JSON files to be used, can be empty if there are no recipe files. |
recipes → file | Yes, if recipes is used. Otherwise no. | Path to the recipe file. |
recipes → label | Yes, if recipes is used. Otherwise no. | The recipe label. |
recipes → name | Yes, if recipes is used. Otherwise no. | The recipe name. |
recipes → condition | No | If condition is met, then the recipe is created in the app; if the condition isn’t met the recipe isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types |
recipes → overwriteOnUpgrade | No | Indicates if asset is overwritten during the reset/upgrade process. Uses Always, IfDifferent, Never, or an expression that evaluates to one these values. Case sensitive. Example: "overwriteOnUpgrade": "${Variables.DontOverwriteQuota ? 'Never' : 'IfDifferent'}", |
externalFiles | Yes | Container attribute only - array of external files, CSV and descriptive files, to be used, can be empty if there are no external files. |
externalFiles → file | No | Path to the CSV file. |
externalFiles → name | Yes, if externalFiles is used. Otherwise no. | The externalFile name. |
externalFiles → rows | No | The number of rows to stub out in the dataset created from the CSV, before data upload. If not specified, defaults to 5. By default, a file has 5 rows until the user uploads their own version of the file. |
externalFiles → schema | No | Path to the schema file (describes the format of the data) |
externalFiles → userXmd | No | Path to the user XMD file (describes the display format of the data). |
externalFiles → type | Yes | Must be CSV. |
externalFiles → condition | No | If condition is met, then the external file is created in the app; if the condition isn’t met, the external file isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types |
externalFiles → overwriteOnUpgrade | No | Indicates if asset is overwritten during the reset/upgrade process. Uses Always, IfDifferent, Never, or an expression that evaluates to one these values. Case sensitive. Example: "overwriteOnUpgrade": "${Variables.DontOverwriteQuota ? 'Never' : 'IfDifferent'}", |
datasetFiles | No | Container attribute only – array of SFDC dataset to be used, can be empty if there are no SFDC dataset. |
datasetFiles → userXmd | No | Path to the user XMD file, if it exists. |
datasetFiles → label | Yes | The dataset label. |
datasetFiles → name | Yes | The dataset name. |
datasetFiles → condition | No | If condition is met, then the dataset is created in the app; if the condition isn’t met, the dataset isn’t created. Can include Overrides, which are defined in variables.json. See Complex variables.json Variable Types |
datasetFiles → liveConnection | No | The container attribute for Snowflake connection live dataset settings. |
datasetFiles → liveConnection → connectionName | Yes, if liveConnection is used. Otherwise no. | The connection name for the Snowflake connector. This name must match the developer name of the connector in the consumer org. |
datasetFiles → liveConnection → sourceObjectName | Yes, if liveConnection is used. Otherwise no. | The Snowflake source table name. |
imageFiles | No | Container attribute only: array of app images to be used. |
imageFiles → label | Yes, if imagesFiles is used. Otherwise no. | A label for the image. |
imageFiles → name | Yes, if imagesFiles is used. Otherwise no. | The image name. |
imageFiles → condition | No | If the condition is met, then the image is uploaded into the app; if the condition isn’t met, the image isn’t uploaded. |
imageFiles → namespace | Yes, if org uses a namespace. | Includes reference to namespace for static resources, for example ${Org.Namespace}. |
extendedTypes | No | Add extended type to a template. |
extendedTypes → discoveryStories | No | Add Einstein Discovery story extended type to template. Uses label, name, file, condition. See Add an Einstein Discovery Story to an Analytics Template |
templateDependencies | No | Array of other templates the template is dependent on. See Share Analytics Assets Between Apps |
templateDependencies →name“ | Yes, if dependencies is used. Otherwise no. | Developer name of the template. |
templateDependencies →namespace“ | No | Namespace of the org, if used. |
templateDependencies →templateVersion“ | No | Number of the template version. |
templateDependencies →condition“ | No | Condition in which to include this dependency. |
components | No | Container attribute only. Array of dashboard component JSON files to be used, can be empty if there are no dashboard components files. |
components → file | Yes, if components is used. Otherwise no. | Path to the dashboard component file. |
components → label | Yes, if components is used. Otherwise no. | A label for the dashboard component. |
components → name | Yes, if components is used. Otherwise no. | The dashboard component name. |
components → condition | No | If the condition is met, then the dashboard component is created in the app. If the condition isn’t met, the dashboard component isn’t created. |